PCIe系列专题之七:PCIe热插拔

当你准备在不断电的情况下插拔一块PCIe SSD时,你要小心了。如果在PCIe设备不支持热插拔的条件下,很可能会对主板或PCIe插槽造成损毁。

为了放置意外的发生,PCIe Spec设计了一种”No Surprise”热插拔机制,即,当用户要插拔PCIe设备时,必须先通知系统软件做好准备,然后通过指示灯告知用户热插拔的状态。

PCIe环境下的热插拔需要软件与硬件的通力合作。先来看一张示意图,红色框内属于软件方面的需求,绿色框内是硬件方面的需求。

软件方面主要包括

  • User Interface: 这部分由系统OS提供。主要允许用户可以请求插拔PCIe设备。

  • Hot-Plug Service: 这部分也是由系统OS提供。主要负责处理用户插拔PCIe设备的请求。

  • Standardized Hot Plug System Driver: 这部分驱动可以由系统OS或者主板提供。

  • Device Driver: 这部分主要有适配卡提供。

硬件方面主要包括

  • Hot-Plug Controller: 主要负责接收和处理来自Hot Plug System Driver的指令。

  • Card Slot Power Switching Logic: 主要被Hot Plug Controller控制,用于turn-on/off电源。

  • Card Reset Logic: 按照Hot-plug System Driver的指示,Hot Plug Controller向需要插拔PCIe设备的插槽(Slot)传送PERST#信 。

  • Power Indicator: 主要负责指示设备连接器上面的电源状态。

  • Attention Indicator: 这个是警示灯,提醒用户热插拔失败状态,所以一般情况下处于关闭状态。

  • Card Present Detect Pins: PCIe设计了两个用于检测PCIe设备是否存在的信 PRSNT1#和PRSNT2#。 PRSNT#1接地,当PCIe设备存在时,PRSNT#2拉高。

在介绍PCIe设备插拔的过程前,我们先了解一下PCIe插槽的On/Off状态:

PCIe Slot ON:

  • 上电;

  • RefClk参考时钟打开;

  • PCIe链路是激活状态或者处于ASPM状态(L0s/L1);

  • PERST#信 处于无效状态。

PCIe Slot OFF:

  • 断电;

  • RefClk参考时钟关闭;

  • PCIe链路是关闭状态或;

  • PERST#信 处于有效状态。

如果要调整Slot上的状态,步骤如下:

PCIe Slot ON转为OFF:

  • 先关停PCIe链路。主要发送EIOS序列进入高阻态;

  • 其次,向slot发送PERST#信 ;

  • 然后,关掉RefClk参考时钟;

  • 最后,给slot断电。

PCIe Slot OFF转为ON:

  • 先上电;

  • 其次,打开RefClk参考时钟;

  • 然后,解除slot上PERST#信 。

在PCIe slot上面插拔PCIe设备的步骤是什么呢/p>

移除PCIe设备:

初始状态是:Attention Indicator(Yellow)-Off,Power Indicator(Green)-On

步骤是:

  • 用户通过压下Attention按钮或者在软件界面告知系统移除PCIe设备的消息。当按下Attention按钮之后,Hot-Plug Controller检查到这个讯息之后,会发送中断给Root Complex。之后,Hot-Plug Service会调用Hot-Plug System Driver去读取slot的状态信息并且侦测到Attention按钮的状态;

  • Hot-Plug Service调用Hot-Plug System Driver让Power指示灯开始闪烁5s并通过状态寄存器来验证热插拔的请求;

  • Hot-Plug Service命令Device Driver停用PCIe设备;

  • 软件通过Link Control Register关闭PCIe链路;

  • 软件命令Hot-Plug Controller关闭slot;

  • 断电后,Power指示灯处于OFF状态;

  • 系统为PCIe设备寻找对应的驱动,并将驱动放入内存;

  • 系统取消对Slot的配置资源。

插入PCIe设备:

初始状态是:Attention Indicator(Yellow)-Off,Power Indicator(Green)-Off

步骤是:

  • 用户安装PCIe设备,并且压下Attention按钮或者在软件界面告知系统安装PCIe设备的信息。主要通过发送中断的形式告知系统热插拔信息;

  • 热插拔软件通过状态寄存器来验证热插拔的请求;

  • 软件命令Power指示灯开始闪烁;

  • 软件命令Hot-Plug Controller将Slot打开,让Slot处于ON状态;

  • 上电后,Power指示灯处于ON状态;

  • 系统为PCIe设备寻找对应的驱动,并将驱动放入内存;

  • 系统调用驱动完成对PCIe设备的初始化。

     

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24758 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月1日
下一篇 2022年9月1日

相关推荐