PCIE的hotplug操作讨论

hotplug的概念

hotplug--热插拔即“带电插拔”,指可以在电脑系统运作时插上或拔除硬件设备。配合适当的软件,便可以在不用关闭电源的情况下插入或拔除支持热插拔的周边设备,不会导致主机或周边设备烧毁并且能够实时侦测及使用新的设备。这个比即插即用(Plug-and-Play)可方便多了。

说道hot-plug那么就会想到hot-removal,这个道理是相互联系,且相通的。下面会就hot-plug的工作原理做一些简单的讨论,详细的理论最好将code 和datesheet结合一起研究。

 

hotplug几个环节

hotplug中间有好几个环节,事件发生时,会产生一连串的反应。下图可以举例简单说明下在window-xp下ExpressCard的hotplug流程。

java 插件热插拔 什么是热插拔设备_Power

这个流程是关于ExpressCard的,类似于PCIe的hotplug流程。实际情况中,PCIe的hotplug会设计到一些概念:

java 插件热插拔 什么是热插拔设备_pcie_02

1、Indicators

标准模型中定义两个indicators:一个Power Indicator和一个Attention Indicator。都会有三种状态:ON;OFF;Blinking。对应的软件层通过下command对这些Indicator有独立的控制权。

Attention Indicator是黄色的灯,用来指示出现了操作的问题,或者表示hotplug slot已经被识别到了,手动操作可以很容易定位到。

Power Indicator是绿色的灯,表示slot的power状态,可以用blink指示总线对用户的操作产生了响应。

2、MRL

MRL是一种手动操作保留机制。保持插入卡在slot上,防止用户移除卡。系统添加了一个MRL sensor,以便侦测每个port对应的slot的MRL。

3、Attention Button

Attention Button是hotplug中定义的一个开关按钮,一般会在slot上或者在卡片上。按一下表明要做一个hotplug动作或者removal动作。

 

hotplug的软件层面

针对PCIe port有一系列的register来实现对hotplug的事件的侦测和处理。

1、  Attention Button register

必须在bios中设定好‘Attention Button Pressed Enable’位,表示使能在hotplug的事件中可以产生中断和wakeup信号。

2、  Attention Indicator Register

主要有‘Attention Indicator control’寄存器。用来控制卡片上device的attentionindicator。可读写。

3、  Power indicator register

类似于attention indicator controller。

4、  Presence detect register

很重要的一个标志位,‘presence detect state’位表示slot上有卡片存在。

 

hotplug在系统上的支持

操作系统对PCIe的hotplug的支持,主要涉及到ACPI部分。当BIOS中已经将hotplug的功能做好初始化之后,进入OS,接下来的动作就是有ACPI中的method来完成了。

Bios会将系统的中断导入GPE,这样ACPI可以响应PCIe的hotplug的事件,包括hotplug和hot-removal。