PCIe热插拔原理

插槽结构

       PCIe热插拔是一种“no surprise”(非暴力)的方法,即先通知系统,然后软件准备卡和插槽,并向用户表明热插拔过程的状态,通知用户现在可以进行热插拔。PCIe热插拔控制寄存器集成在RC和switch中,在系统热插拔软件控制下,使PCIe EP热插拔时有序上下电。 

        PCIe的CEM(Card Electromechanical Specification)标准,定义了add-in card有两个热插拔边带信号,即PRSNT1#和PRSNT2#。在EP设备两个信号是直接连接在一起的,且金手指比其他信号长度要短。在PCIE插槽PRSNT1#固定接地,PRSNT2#弱上拉(PULL-UP),所以,插槽无设备时,PRSNT1#处于低电平,PRSNT2#处于高电平状态。当PCIe卡设备完全插入插槽后,插槽上的PRSNT2#信号则会因PCIe卡设备连接到地,从而使得其变为低电平。hot plug control logic检测到PRSNT2#从高电平跳变到低电平,则会通知下行端口检测到presence detect 事件,下行端口发送中断消息给RC,通知系统软件有新设备插入。       

PCIe热插拔的组成

      PCIe采用点到点的连接,每个跟连接器相连的端口都需要一个hot plug控制器。为每个RP(Root Port)和Switch端口定义的标准软件接口控制热插拔操作

热插拔所需的元素。

软件元素包括以下内容:

硬件元素包括以下内容:

PCIe热插拔的具体过程

PCIe设备移除的流程:

正常运行时的指示状态如下:

  • Attention Indicator为黄色 - Off

  • Power Indicator为绿色 - On

  1.  用户通过按下“告警”按钮或在系统软件界面选中要移除的PCIe设备编号。若通过按键发起请求,Hot-Plug控制器检测到该事件,并向RC发送中断信号。然后Hot-Plug Service调用Hot-Plug驱动去读取slot状态信息并检测“告警”按钮的操作请求。

  2. 随后,热插拔服务向热插拔系统驱动下发指令,使插槽电源指示灯闪烁 5 秒,用户可以在这5s内再次按该按钮以取消请求。

  3.  热插拔软件校验请求期间,电源指示灯保持闪烁状态。若PCIe设备当前正运行系统关键业务,软件可拒绝移除请求。此种情况下,软件会向热插拔控制器下发指令,将电源指示灯恢复为常亮状态。

  4. 若请求校验通过,热插拔服务程序会指令该板卡的设备驱动进入设备静默状态:即禁止设备产生新的请求,并完成或终止所有未处理完成的根端口 / 交换端口请求。

  5. 随后软件下发指令,通过该插槽所属根端口或交换端口的Link Control寄存器,禁用板卡的 PCIe 链路。

  6. 紧接着软件命令Hot-Plug控制器关闭插槽供电。

  7. 插槽成功下电后,软件发送电源指示灯关闭请求,熄灭电源指示灯,告知用户可以拔除板卡。

  8. 用户释放机械锁定卡扣,将其松开;热插拔控制器随即断开插槽所有交换信号(如 SMBus 总线信号、JTAG 调试信号),此时即可拔出板卡。

  9. 操作系统释放此前分配给该设备的内存空间、I/O 空间、中断线等资源,并将这些资源回收,留待后续分配给其他设备使用

PCIe设备插入的流程:

  1. 用户插入PCIe设备,并锁定MRL机械锁。

  2. 用户按下“告警”按钮或者在软件界面告知系统有新插入PCIe设备。 

  3. 若通过按键触发,按键事件会通知热插拔控制器,置位状态寄存器对应位,并发送中断给RC。然后软件从该端口读取slot状态并识别该请求。

  4. 热插拔服务向热插拔系统驱动下发指令,控制热插拔控制器使插槽电源指示灯闪烁,提示用户禁止拔卡。指示灯开始闪烁起,预留 5 秒撤销窗口期,用户可再次按下按钮取消本次安装请求。
  5. 热插拔软件校验请求期间,电源指示灯保持闪烁。软件有可能校验失败(例如安全策略配置禁止启用该插槽)。若请求校验不通过,软件向热插拔控制器下发指令,关闭电源指示灯。规范建议软件通过弹窗提示或系统日志记录方式,向运维人员告知请求被拒绝的原因。
  6. 热插拔服务向热插拔系统驱动发送请求,指令Hot Plug控制器为插槽上电

  7. 电源接通后,软件发出命令打开电源指示灯。

  8. 链路训练完成后,软件通过分配必要的资源来配置PCIe function。

  9. OS为PCIe设备寻找对应的驱动,并将驱动加载到内存中。

  10. OS调用驱动完成对PCIe设备的初始化,并使能PCIe设备。

PCIe热插拔控制器的编程接口

PCIe热插拔控制器的编程接口是通过PCIe capability寄存器提供的。

图片

slot capability寄存器如下图(PCIe base spec文档)。寄存器的各域段是硬件负责初始化的,表示port的特性,如是否存在Attention"警告“按钮、是否支持Hot Plug能力(Capable)、是否支持暴力插拔(Surprise)等特性。

图片

slot control寄存器如下图。软件通过slot control寄存器来控制Hot Plug event和相关操作,还有中断使能等。

图片

slot status寄存器如下图。热插拔控制器监控各种event,并向驱动程序报告这些event。软件可以使用status位来确定发生了什么event。这些事件是否通过中断报告给系统,由slot control寄存器中相关的enable bit决定。

图片

PCIe支持以下Hot Plug event,这些event都有一个status字段和一个enable字段。status表示事件发生了但是还没有被软件处理。enable表示是否使能通知软件。

  • Slot Event

    • Attention Button Pressed

    • Power Fault Detected

    • MRL Sensor Changed

    • Presence Detect Changed

  • Command Completed Event

  • Data Link Layer State Changed Event

参考

1.Mindshare PCI Express Technology 3.0

2.PCI Express Card Electromechanical Specification

3.PCI Express® Base Specification Revision 6.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuunsdd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值