HACK#43 PCI设备的热插拔

本节介绍PCI设备的热插拔。

热插拔功能,是指在不停止系统的情况下向系统添加、删除设备的功能。PCI中也考虑了热插拔的结构,在部分系统中可以使用。这与USB的热插拔是不同的,需要首先了解热插拔的流程才能更好地使用PCI设备的热插拔,因此本节对其概述并介绍Linux下的使用方法。

PCI相关设备的热插拔规格有使用PCI Standard Hot-Plug Controller(SHPC)的热插拔、PCI Express的热插拔、ACPI热插拔、厂商固有功能的热插拔等。其中,作者认为使用最广的热插拔规格是SHPC。理解SHPC的规格就可以理解其他PCI热插拔的流程。PCI Express的热插拔基本上也是与SHPC规格相同的。

SHPC是安装在PCI-to-PCI桥或PCI主桥上的热插拔用控制器。SHPC中定义了Standard Usage Model这个热插拔的标准用户操作,其中构成Standard Usage Model的要素参见表6-15。

HACK#43 PCI设备的热插拔 - 图1

Indicator有Power Indicator(见表6-16)和Attention Indicator(见表6-17)。各个Indicator分别有on(亮灯)、off(灭灯)、blinking(闪烁)这三个状态,Indicator由软件完全控制,可以单独显示各个状态。

HACK#43 PCI设备的热插拔 - 图2

HACK#43 PCI设备的热插拔 - 图3

Hot-add的流程

SHPC中定义了使用软件接口的Hot-add和使用Attention按钮的Hot-add,这里介绍使用软件接口的Hot-add的流程。

1.打开MRL(物理固定PCI卡的锁扣)。

2.插入PCI卡,关闭MRL,安装连接线。

3.用户从软件发布让插槽变为可使用状态的要求。此时Power Indicator仍然为off(灭灯)状态。

4.用户从软件接口通知可以将插槽变为可使用状态。此时Power Indicator变为blinking(闪烁)状态。

5.用户等待插槽完全变为可使用状态。完全变为可使用状态后,Power Indicator变为on(亮灯)状态。