searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PCIe热插拔机制和过程

2024-11-19 09:21:41
34
0

当使用暴力将硬件直接从主机上移除,便是Surprise remove,这容易导致主机出现各类异常。如果在PCIe设备不支持热插拔的条件下,很可能会对主板或PCIe插槽造成损毁。

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

PCIe环境下的热插拔需要软件与硬件co-work

软件方面主要包括:

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 控制器控制,用于开关电源。

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参考时钟;

然后,解除slotPERST#信号。

 

那么PCIe热插拔的步骤是什么样的呢?

移除PCIe设备:

初始状态是:Attention Indicator(Yellow)-OffPower Indicator(Green)-On

步骤是:

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

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

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

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

软件命令Hot-Plug Controller关闭slot

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

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

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

并且HOST会停止应用程序对该PCIe设备的处理和服务,根据设备类型的不同(网络/存储/视频/音频/图形等设备类型),停止方式和策略不同。

 

插入PCIe设备:

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

步骤是:

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

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

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

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

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

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

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

同时会启动HOST上和该PCIe设备类型有关的应用程序和服务,根据设备类型的不同(网络/存储/视频/音频/图形等设备类型),启动方式和策略不同。

Slot Capabilities Register结构图下,它不能存在于Endpoint,只存在于PCIE_BRIDGE/ROOT_PORT/DOWNSTREAM中。

其中和热插拔有关的flag

Hot‐Plug Surprise — indicates that it’s possible for the user to remove the
card from the system without prior notification. This tells the OS to allow
for such removal without affecting continued software operation.

Hot‐Plug Capable — indicates that this slot supports hot plug operation.

以上介绍了PCIe热插拔的相关的软件和硬件交互流程。

0条评论
作者已关闭评论
gongw
6文章数
0粉丝数
gongw
6 文章 | 0 粉丝
原创

PCIe热插拔机制和过程

2024-11-19 09:21:41
34
0

当使用暴力将硬件直接从主机上移除,便是Surprise remove,这容易导致主机出现各类异常。如果在PCIe设备不支持热插拔的条件下,很可能会对主板或PCIe插槽造成损毁。

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

PCIe环境下的热插拔需要软件与硬件co-work

软件方面主要包括:

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 控制器控制,用于开关电源。

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参考时钟;

然后,解除slotPERST#信号。

 

那么PCIe热插拔的步骤是什么样的呢?

移除PCIe设备:

初始状态是:Attention Indicator(Yellow)-OffPower Indicator(Green)-On

步骤是:

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

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

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

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

软件命令Hot-Plug Controller关闭slot

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

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

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

并且HOST会停止应用程序对该PCIe设备的处理和服务,根据设备类型的不同(网络/存储/视频/音频/图形等设备类型),停止方式和策略不同。

 

插入PCIe设备:

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

步骤是:

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

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

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

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

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

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

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

同时会启动HOST上和该PCIe设备类型有关的应用程序和服务,根据设备类型的不同(网络/存储/视频/音频/图形等设备类型),启动方式和策略不同。

Slot Capabilities Register结构图下,它不能存在于Endpoint,只存在于PCIE_BRIDGE/ROOT_PORT/DOWNSTREAM中。

其中和热插拔有关的flag

Hot‐Plug Surprise — indicates that it’s possible for the user to remove the
card from the system without prior notification. This tells the OS to allow
for such removal without affecting continued software operation.

Hot‐Plug Capable — indicates that this slot supports hot plug operation.

以上介绍了PCIe热插拔的相关的软件和硬件交互流程。

文章来自个人专栏
社区专栏
6 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0