7.5.3.9 槽位能力寄存器(偏移量14h)
槽能力寄存器标识PCI Express槽特定的能力。图7-30 Slot能力寄存器中寄存器字段的详细分配;表7-25提供了各自的位定义。
如果实现了这个寄存器,但是插槽实现的比特是明确的,那么整个寄存器的字段行为是未定义的。
Figure 7-30 Slot Capabilities Register

Table 7-25 Slot Capabilities Register
Bit Location | 寄存器描述 | 属性 |
0 | Attention Button存在 - 当此位被设置时,表示此插槽的Attention Button由机箱电气控制。 | HwInit |
1 | Power Controller存在 - 当此位被设置时,表示为该插槽/适配器(取决于外形规格)实现了一个软件可编程的Power Controller。 | HwInit |
2 | MRL 传感器存在 - 当此位被设置时,表示机箱上为此插槽实现了 MRL(Manufacturer's Recommended Limits)传感器。 | HwInit |
3 | 注意指示器存在 - 当此位被设置时,表示注意指示器由机箱电气控制。 | HwInit |
4 | 电源指示器存在 - 当此位被设置时,表示电源指示器由机箱电气控制。 | HwInit |
5 | Hot-Plug Surprise - 当此位被设置时,表示此插槽中的适配器可能会在没有任何预先通知的情况下从系统中移除。这是一种特定于外形规格的能力。此位指示操作系统允许这种移除而不影响软件的持续操作。如果 SFI 控制寄存器中的 SFI HPS Suppress 位被清除,读取Hot-Plug Surprise位将返回 HwInit 值。如果 SFI HPS Suppress 位被设置,读取将返回 0b。请参阅第 7.9.23.3 节。 | HwInit/RO (see description) |
6 | 支持热插拔 - 当此位被设置时,表示该插槽支持热插拔操作。 | HwInit |
14:7 | 插槽功率限制值 - 与插槽功率限制比例值结合,指定插槽提供的功率上限(参见第 6.9 节)或其他方式到适配器。功率限制(以瓦特为单位)通过将该字段中的值与插槽功率限制比例字段中的值相乘来计算,除非插槽功率限制比例字段等于 00b(1.0x)且插槽功率限制值超过 EFh,此时使用以下替代编码:F0h 表示 250 W,F1h 表示 275 W,F2h 表示 300 W,F3h 至 FFh 保留用于 300 W 以上的插槽功率限制值。此寄存器必须在插槽实现位设置时实现。写入此寄存器还会导致端口发送 SetSlotPower_Limit 消息。硬件/固件初始化之前的默认值为 0000 0000b。 | HwInit |
16:15 | 插槽功率限制比例 - 指定用于插槽功率限制值的比例(参见第 6.9 节)。值的范围如下: - 00b: 1.0x - 01b: 0.1x - 10b: 0.01x - 11b: 0.001x 如果插槽实现位设置,则必须实现此寄存器。对该寄存器的写操作还会导致端口发送 SetSlotPower_Limit 消息。硬件/固件初始化之前的默认值为 00b。 | HwInit |
17 | 机电连锁存在 - 当此位被设置时,表示该插槽的机箱上实现了机电连锁。 | HwInit |
18 | 不支持命令完成通知 - 当此位被设置时,表示该插槽在热插拔控制器完成发出的命令时不会生成软件通知。只有在热插拔支持的端口能够在连续写入之间没有延迟地接受对插槽控制寄存器所有字段的写入时,才允许设置此位。 | HwInit |
31:19 | 物理插槽编号 - 此字段指示与该端口连接的物理插槽编号。此字段必须通过硬件初始化为一个在机箱内唯一的插槽编号,无论插槽的形式因素如何。对于连接到系统板上集成的设备或与交换设备或根端口集成在同一硅片上的设备的端口,此字段必须初始化为零。 | HwInit |
7.5.3.10 槽控制寄存器(偏移18h)
Slot Control Register 控制 PCI Express 插槽的特定参数。Figure 7-31 详细说明了 Slot Control Register 中寄存器字段的分配;Table 7-26提供了相应的字段的定义。
Slot Control Register 的 Attention Indicator Control、Power Indicator Control 和 Power Controller Control 字段没有定义的默认值。如果实现了这些字段,则链路复位后,系统固件或操作系统软件必须初始化这些字段。
在支持热插拔的下游端口中,对 Slot Control Register 的写操作必须导致生成热插拔命令(有关热插拔命令的详细信息,请参见Section 6.7.3.2)。对不具有热插拔功能的下游端口中的 Slot Control Register 进行写操作,不得导致执行热插拔命令。
如果已实现该寄存器,但 Slot Implemented 字段清 0,则除 Data Link Layer State Changed Enable 字段外,整个寄存器的字段行为均未定义。。
Figure 7-31 Slot Control Register

Table 7-26 Slot Control Register
Bit Location | 寄存器描述 | 属性 |
0 | Attention Button按下启用 - 当设置为1b时,此位启用在Attention Button按下事件上进行软件通知(见第6.7.3节)。如果插槽能力寄存器中的Attention Button存在位为0b,则此位仅允许读取,其值为0b。该位的默认值为0b。 | RW |
1 | 电源故障检测启用 - 当设置时,此位启用在电源故障事件上进行软件通知(见第6.7.3节)。如果未实现支持电源故障检测的Power Controller,则此位仅允许读取,其值为0b。该位的默认值为0b。 | RW |
2 | MRL传感器更改启用 - 当设置时,此位启用在MRL传感器更改事件上进行软件通知(见第6.7.3节)。如果插槽能力寄存器中的MRL传感器存在位为清除状态,则此位仅允许读取,其值为0b。该位的默认值为0b。 | RW |
3 | 存在检测更改启用 - 当设置时,此位启用在存在检测更改事件上进行软件通知(见第6.7.3节)。如果插槽能力寄存器中的热插拔能力位为0b,则此位仅允许读取,其值为0b。该位的默认值为0b。 | RW |
4 | 命令完成中断启用 - 如果支持命令完成通知(即插槽能力寄存器中的无命令完成支持位为0b),则当设置时,此位启用在热插拔控制器完成热插拔命令时进行软件通知。如果不支持命令完成通知,则此位必须硬件连接为0b。该位的默认值为0b。 | RW |
5 | 热插拔中断启用 - 当设置时,此位启用在启用的热插拔事件上生成中断。如果插槽能力寄存器中的热插拔能力位为清除状态,则此位仅允许读取,其值为0b。该位的默认值为0b。 | RW |
7:6 | 注意指示器状态 - 读取此字段必须反映最新写入的值,即使对应的热插拔命令未完成,除非软件在等待之前的命令完成后进行写入,此时读取的值为未定义。定义的编码如下: - 00b 预留 - 01b 开启 - 10b 闪烁 - 11b 关闭 注意:此字段的默认值必须是非预留值之一。如果插槽能力寄存器中的注意指示器存在位为0b,则此位仅允许读取,其值为00b。 | RW |
9:8 | 电源指示器控制 - 如果实现了电源指示器,对此字段的写操作会将电源指示器设置为写入的状态。读取此字段必须反映最新写入的值,即使对应的热插拔命令未完成,除非软件在等待之前的命令完成后进行写入,此时读取的值为未定义。定义的编码如下: - 00b 预留 - 01b 开启 - 10b 闪烁 - 11b 关闭 注意:此字段的默认值必须是非预留值之一。如果插槽能力寄存器中的电源指示器存在位为0b,则此位仅允许读取,其值为00b。 | RW |
10 | Power Controller控制 - 如果实现了Power Controller,对此位的写操作会根据定义的编码设置插槽的电源状态。读取此位必须反映最新写入的值,即使对应的热插拔命令未完成,除非软件进行写操作而不等待之前的命令完成,此时读取值为未定义。请注意,在某些情况下,Power Controller可能会自主移除插槽电源或不响应电源开启请求,这取决于检测到的故障条件,与Power Controller控制设置无关。定义的编码如下: - 0b 电源开启 - 1b 电源关闭 如果插槽能力寄存器中的Power Controller存在位为清除状态,则对该位的写操作无效且读取值未定义。 | RW |
11 | 电机机械联锁控制 - 如果实现了电机机械联锁,对此位的写操作将使联锁状态切换。写入0b对此位没有影响。读取此位始终返回0b。 | RW |
12 | 数据链路层状态变化使能 - 如果数据链路层链路激活报告能力为1b,该位在数据链路层链路激活位改变时启用软件通知。 如果数据链路层链路激活报告能力位为0b,则此位允许设为只读,值为0b。 此位的默认值为0b。 | RW |
13 | 自动插槽功率限制禁用 - 当设置时,会禁用在链路从非DLUp状态转换为DLUp状态时自动发送SetSlotPower_Limit消息。 不支持DPC的下游端口允许将此位硬线连接到0。 此位的默认值是特定于实现的。 | RW |
14 | 带内PD禁用 - 当设置时,此位禁用带内存在检测机制对存在检测状态位的影响,允许该位仅报告带外存在检测。否则,存在检测状态位反映带内和带外存在检测机制的逻辑或。此外,带内PD禁用位还控制链路状态2寄存器中的下游组件存在字段的组件存在状态。此位必须在带内PD禁用支持位为1b时实现,否则必须硬线连接到0b。默认值为0b。 | RW |
7.5.3.11 槽位状态寄存器(偏移1Ah)
Slot Status Register 提供有关 PCI Express 插槽特定参数的信息。Figure 7-32 详细说明了 Slot Status Register 中寄存器字段的分配;Table 7-27 提供了相应的位定义。设备未实现的状态位的寄存器字段具有 RsvdZ 属性。
如果实现了该寄存器,但 Slot Implemented 为 0,则整个寄存器的字段行为(数据链路层状态更改位除外)是未定义的。

Table 7-27 Slot Status Register
Bit Location | 寄存器描述 | 属性 |
0 | Attention Button按下 - 如果实现了Attention Button,当按下Attention Button时,此位被置位。如果不支持Attention Button,则此位不应被置位。 | RW1C |
1 | Power Fault Detected - 如果实现了支持电源故障检测的电源控制器,则在电源控制器检测到此插 槽的电源故障把该位置 1。注意,根据硬件能力,可以随时检测到电源故障,这与电源控制器控 制设置或插槽占用无关。如果不支持电源故障检测,则不得设置此位 | RW1C |
2 | MRL传感器变化 - 如果实现了MRL传感器,当检测到MRL传感器状态变化时,此位被置位。如果没有实现MRL传感器,则此位不应被置位。 | RW1C |
3 | 存在检测变化 - 当“存在检测状态”位报告的值发生变化时,此位被置位。 | RW1C |
4 | 命令完成 - 如果支持命令完成通知(即插槽能力寄存器中的“未支持命令完成”位为0b),则当热插拔命令完成并且热插拔控制器准备好接受下一个命令时,此位被置位。命令完成状态位置位表明热插拔控制器已处理上一个命令并准备接收下一个命令,但不保证命令对应的操作已完成。如果不支持命令完成通知,此位应硬连线为0b。 | RW1C |
5 | MRL传感器状态 - 如果实现了MRL传感器,此位报告MRL传感器的状态。 定义的编码有: 0b MRL关闭 0b MRL打开 | RO |
6 | 存在检测状态 - 此位指示插槽中适配器的存在状态。当“带内PD禁用”位为清除状态时,该状态通过物理层带内存在检测机制(与适配器对应的外形规格)反映出来。请注意,带内存在检测机制要求适配器上电才能检测到其存在。因此,需要Power Controller进行热插拔的外形规格必须实现带外存在检测机制。当“带内PD禁用”位被置位时,带内存在检测机制对该位没有影响。 定义的编码有: - 0b 适配器未插入 - 1b 适配器已插入 此位必须在所有实现插槽的下游端口上实现。对于未连接到插槽的下游端口(即PCI Express能力寄存器中的“插槽实现”位为0b),此位必须硬连线为1b。 | RO |
7 | 机电联锁状态 - 如果实现了机电联锁,此位指示机电联锁的状态。 定义的编码有: - 0b 机电联锁未啮合 - 1b 机电联锁已啮合 | RO |
8 | 数据链路层状态已更改 - 当Link状态寄存器中的数据链路层Link活动位的值发生变化时,此位被置位。 在响应数据链路层状态已更改事件时,软件必须读取Link状态寄存器中的数据链路层Link活动位,以确定Link是否处于活动状态,然后才能对热插拔设备发起配置周期。 | RW1C |
实现注意事项:No Slot Power Controller
对于没有实现Power Controller的槽位,软件必须在读取存在检测状态之前,确保系统电源平面打开,为槽位提供电源。
夜雨聆风