7.9.15 DPC扩展能力
如果下游端口实现了DPC扩展能力,该端口也必须能够报告DL_Active状态,并通过在链路能力寄存器中设置数据链路层链路活动报告能力位来表示。参见7.5.3.6节。
各种RP PIO寄存器必须只由支持DPC的RP扩展的根端口来实现,正如DPC能力寄存器中的DPC位的RP扩展所示。
图7-249 DPC扩展能力
Figure 7-249 DPC Extended Capability

7.9.15.1 DPC扩展能力报头(偏移量00h)
Figure 7-250 DPC Extended Capability Header

表7-201 DPC扩展能力报头
寄存器描述 | 描述 | 属性 | |
15:0 | PCI Express Extended Capability ID | PCI Express Extended Capability ID—该字段是PCI- sig定义的ID号,表示扩展能力的性质和格式。 | RO |
19:16 | Capability Version | 能力版本-该字段是PCI-SIG定义的版本号,指示当前能力结构的版本。 | RO |
31:20 | Next Capability Offset | Next Capability Offset-该字段包含下一个PCI Express Extended Capability结构的偏移量,如果能力链表中没有其他项,则为000h。 | RO |
7.9.15.2 DPC能力寄存器(偏移量04h)
Figure 7-251 DPC Capability Register

表7-202 DPC能力寄存器
Table 7-202 DPC Capability Register
寄存器描述 | 描述 | 属性 | |
4:0 | DPC Interrupt Message Number | DPC中断消息号-该字段表示哪个MSI/MSI- X 向量用于与DPC能力结构相关联的中断消息。对于MSI,该字段的值表示基本消息数据与生成的中断消息之间的偏移量。硬件需要更新此字段,以便当软件写入MSI消息控制寄存器中的多消息启用字段时,分配给函数的MSI消息的数量发生变化时,它是正确的。对于MSI-X,该字段的值表示使用哪个MSI-X表项生成中断消息。即使函数实现了超过32个表项,该表项也必须是前32个表项之一。对于给定的MSI-X实现,条目必须保持不变。如果实现了MSI和MSI- x,则允许它们使用不同的向量,尽管软件一次只允许启用一种机制。如果使能了MSI-X,该字段的值必须表示MSI-X的矢量。如果MSI使能或未使能,该字段的值必须表示MSI的矢量。如果软件同时使能MSI和MSI- x,则该字段的值未定义。 | RO |
5 | RP Extensions for DPC | DPC的RP扩展-如果设置,该位表示根端口支持特定于根端口的一组定义的DPC扩展。交换机下行端口不能设置此位。 | RO |
6 | Poisoned TLP Egress Blocking Supported | 支持中毒TLP出口阻塞-如果设置,表示根端口或交换机下行端口支持阻止从其出口端口发送中毒TLP的能力。支持DPC的RP扩展的根端口必须设置此位。 | RO |
7 | DPC Software Triggering Supported | 支持DPC软件触发—如果设置,表示根端口或交换机下行端口支持软件触发DPC。支持DPC的RP扩展的根端口必须设置此位。 | RO |
11:8 | RP PIO Log Size | RP PIO Log Size-该字段表示为RP PIO日志寄存器分配了多少DWORDs,由RP PIO Header Log, RP PIO ImpSpec Log和RP PIO TLP Prefix Log组成。如果根端口支持DPC的RP扩展,该字段的值必须大于等于4;否则,该字段的值必须为0。参见章节7.9.15.11、7.9.15.12和7.9.15.13。 | RO |
12 | DLActive ERRCOR Signaling Supported | DLActive ERRCOR信号支持-如果设置,该位表示根端口或交换下行端口支持在链路转换到DLActive状态时使用ERRCOR信号的能力。支持DPC的RP扩展的根端口必须设置此位。 | RO |
7.9.15.3 DPC控制寄存器(偏移量06h)
Figure 7-252 DPC Control Register

表7-203 DPC控制寄存器
Table 7-203 DPC Control Register
寄存器描述 | 描述 | 属性 | |
1:0 | DPC 触发使能 | DPC触发使能-该字段使能DPC并控制触发DPC的条件。 定义的编码有: 00bDPC是disabled的; 01bdpc是enabled的,当下游端口检测到未屏蔽的不可纠正错误或收到ERRFATAL消息时触发。 10bdpc是enabled的,当下游端口检测到未屏蔽的不可纠正错误或收到ERRNONFATAL或ERR_FATAL消息时触发。 | RW |
2 | DPC 完成控制 | DPC完成控制-该位控制在DPC期间形成的完成状态。参见章节2.9.3。 定义的编码有: 0bCompleter Abort (CA) Completion Status 1bUnsupported Request (UR) Completion status 该位的默认值为0b | RW |
3 | DPC 中断使能 | DPC中断使能-当设置时,此位允许生成中断以表明DPC已被触发。请参见第6.2.10.1节。此位的默认值为0b。 | RW |
4 | DPC ERR_COR 使能 | DPC ERRCOR使能-当设置时,此位允许发送ERRCOR消息以指示DPC已被触发。请参见第6.2.10.2节。此位的默认值为0b。 | RW |
5 | 有毒 TLP 输出阻塞使能 | 中毒TLP出口阻塞使能-如果设置了中毒TLP出口阻塞支持位,该位必须为RW;否则,允许将其硬连接到0b。除非设置了中毒TLP出口阻塞支持位,否则软件不得设置此位。当设置此位时,使关联的出口端口能够阻止有毒tlp的传输。参见2.7.2.2节。 缺省值为0b。 | RW/RO |
6 | DPC 软件触发 | DPC软件触发-如果设置了DPC软件触发支持位,则该位必须为RW;否则,允许将其硬连接到0b。如果DPC使能,且DPC触发状态位为“清除”,则软件向该位写入1b时触发DPC。否则,软件将1b写入此位没有影响。允许将1b写入此位,同时将更新的值写入该寄存器中的其他字段,特别是DPC Trigger Enable字段。对于这种情况,DPC Software Trigger语义基于DPC Trigger Enable字段的更新值。这个位在读取时总是返回0b。 | RW/RO |
7 | DLActive ERRCOR 使能 | 如果 DLActive ERRCOR 信号支持位被设置,则该位必须是 RW;否则,允许将其硬件接线为 0b。除非 DLActive ERRCOR 信号支持位被设置,否则软件不得设置此位。设置时,该位启用关联的下游端口在Link转到 DLActive 状态时发出 ERRCOR 信号。请参见第 6.2.10.5 节。默认值:0b。 | RW/RO |
8 | DPC SIG_SFW 使能 | DLActive ERRCOR Enable -如果设置了DLActive ERRCOR信令支持位,则该位必须为RW;否则,允许将其硬连接到0b。除非设置了DLActive ERRCOR信令支持位,否则软件不得设置此位。当设置时,当链路转换到DLActive状态时,该位使关联的下游端口能够发出ERRCOR信号。参见6.2.10.5节。缺省值为0b |
7.9.15.4 DPC状态寄存器(偏移量08h)
Figure 7-253 DPC Status Register

表7-204 DPC状态寄存器
Table 7-204 DPC Status Register
寄存器描述 | 描述 | 属性 | |
0 | DPC 触发状态 | DPC触发状态-当设置时,该位表示DPC已被触发,并且根据定义端口处于“在DPC中”。DPC是事件触发的。当这个位被设置时,硬件必须将LTSSM引导到禁用状态。这个位必须清除,然后LTSSM才能从禁用状态中释放出来,之后端口不再处于DPC状态,并且LTSSM必须转换到检测状态。关于软件在DPC中必须离开下游端口多长时间的要求,请参见6.2.10节。一旦满足了这些要求,就允许软件清除这个位,而不管与触发事件相关的其他状态位的状态如何。在清除这个位之后,软件必须遵守第6.6.1节中定义的关于常规复位后第一次配置读取的定时要求。缺省值为0b。 | RW1CS |
2:1 | DPC 触发原因 | DPC触发原因- DPC触发的原因。定义的编码是: 00bDPC被触发,由于一个未被屏蔽的不可纠正的错误。 01bDPC因收到ERRNONFATAL而触发。 10bDPC因收到ERRFATAL而触发。 11bDPC触发的原因由DPC触发原因扩展字段指出。 该字段仅在设置了DPC触发状态位时有效;否则该字段的值是未定义的。 | ROS |
3 | DPC 中断状态 | DPC中断状态-如果DPC被触发而DPC中断使能位被设置,该位被设置。这可能导致中断的产生。参见6.2.10.1节。缺省值为0b。 | RW1CS |
4 | DPC RP 忙状态 | DPC RP忙-当DPC触发状态位被设置并且这个位被设置时,根端口正忙于内部活动,这些活动必须在软件被允许清除DPC触发状态位之前完成。当设置DPC触发状态位时,如果软件清除DPC触发状态位,则该行为未定义。该字段仅在设置了DPC触发状态位时有效;否则该字段的值是未定义的。该位仅适用于支持DPC的RP扩展的Root端口,为Switch下行端口保留。该位的缺省值没有定义。 | RO/RsvdZ |
6:5 | DPC 触发原因扩展 | DPC触发原因扩展-该字段作为DPC触发原因字段的扩展。当该字段有效且值为11b时,该字段表示触发DPC的原因。定义的编码是: 00bDPC是由RP PIO错误触发的。 01bDPC因DPC软件触发位触发。 10b Reserved 11b Reserved dpc触发状态位设置,且DPC触发原因字段值为11b时该字段有效;否则该字段的值是未定义的。 | ROS |
12:8 | RP PIO 第一个错误指针 | 该字段的值标识 RP PIO 状态寄存器中的位位置,并且当该位被设置时,此字段被视为有效。当此字段有效时,如果软件写入 1b 到指示的 RP PIO 状态位(从而清除它),则此字段必须恢复到其默认值。 | ROS/RsvdZ |
13 | DPC SIG_SFW 状态 | 如果功能支持 ERRCOR 子类能力,则此位必须实现;否则,必须将其硬连线到 0b。如果实现,则当发送 SIGSFW ERR_COR 消息以表示 DPC 事件时,此位被设置。请参见第 6.2.10.2 节和第 6.2.10.5 节。 | <o:p> |
7.9.15.5 DPC错误源ID寄存器(偏移量0Ah)
Figure 7-254 DPC Error Source ID Register

表7-205 DPC错误源ID寄存器
Table 7-205 DPC Error Source ID Register
寄存器描述 | 描述 | 属性 | |
15:0 | DPC 错误源 ID | 当 DPC 触发原因字段指示 DPC 是由于接收到 ERRNONFATAL 或 ERRFATAL 触发时,此寄存器包含接收到的消息的请求者 ID。否则,此寄存器的值为未定义。 | ROS |
7.9.15.6 RP PIO状态寄存器(偏移量0Ch)
图7-255 RP PIO状态寄存器
Figure 7-255 RP PIO Status Register

表7-206 RP PIO状态寄存器
Table 7-206 RP PIO Status Register
寄存器描述 | 属性 | 默认值 | |
0 | Cfg UR Cpl | 收到配置请求 UR 完成 | RW1CS 0b |
1 | Cfg CA Cpl | 收到配置请求 CA 完成 | RW1CS 0b |
2 | Cfg CTO | 配置请求超时完成 | RW1CS 0b |
8 | I/O UR Cpl | 收到 I/O 请求 UR 完成 | RW1CS 0b |
9 | I/O CA Cpl | 收到 I/O 请求 CA 完成 | RW1CS 0b |
10 | I/O CTO | I/O 请求超时完成 | RW1CS 0b |
16 | Mem UR Cpl | 收到内存请求 UR 完成 | RW1CS 0b |
17 | Mem CA Cpl | 收到内存请求 CA 完成 | RW1CS 0b |
18 | Mem CTO | 内存请求超时完成 | RW1CS 0b |
31 | 永久保留 | 默认 RP PIO 首个错误指针字段值指向它 | RsvdZ 0b |
7.9.15.7 RP PIO掩码寄存器(偏移10h)
图7-256 RP PIO Mask Register

表7-207 RP PIO掩码寄存器
Table 7-207 RP PIO Mask Register
7.9.15.8 RP PIO严重性寄存器(偏移量14h)
图7-257 RP PIO严重性寄存器

表7-208 RP PIO严重性寄存器
寄存器描述 | 属性 | 默认值 | |
0 | Cfg UR Cpl - 配置请求接收到 UR 完成 | RWS | 1b |
1 | Cfg CA Cpl - 配置请求接收到 CA 完成 | RWS | 1b |
2 | Cfg CTO - 配置请求完成超时 | RWS | 1b |
8 | I/O UR Cpl - I/O 请求接收到 UR 完成 | RWS | 1b |
9 | I/O CA Cpl - I/O 请求接收到 CA 完成 | RWS | 1b |
10 | I/O CTO - I/O 请求完成超时 | RWS | 1b |
16 | Mem UR Cpl - 内存请求接收到 UR 完成 | RWS | 1b |
17 | Mem CA Cpl - 内存请求接收到 CA 完成 | RWS | 1b |
18 | Mem CTO - 内存请求完成超时 | RWS | 1b |
7.9.15.9 RP PIO SysError寄存器(偏移量18h)
图7-258 RP PIO SysError Register
Figure 7-258 RP PIO SysError Register

表7-209 RP PIO SysError寄存器
Table 7-209 RP PIO SysError Register
寄存器描述 | 属性 | 默认值 | |
0 | Cfg UR Cpl - 配置请求接收到 UR 完成 | RWS | 0b |
1 | Cfg CA Cpl - 配置请求接收到 CA 完成 | RWS | 0b |
2 | Cfg CTO - 配置请求完成超时 | RWS | 0b |
8 | I/O UR Cpl - I/O 请求接收到 UR 完成 | RWS | 0b |
9 | I/O CA Cpl - I/O 请求接收到 CA 完成 | RWS | 0b |
10 | I/O CTO - I/O 请求完成超时 | RWS | 0b |
16 | Mem UR Cpl - 内存请求接收到 UR 完成 | RWS | 0b |
17 | Mem CA Cpl - 内存请求接收到 CA 完成 | RWS | 0b |
18 | Mem CTO - 内存请求完成超时 | RWS | 0b |
7.9.15.10 RP PIO异常寄存器(偏移量1Ch)
图7-259 RP PIO异常寄存器
Figure 7-259 RP PIO Exception Register

表7-210 RP PIO异常寄存器
Table 7-210 RP PIO Exception Register
寄存器描述 | 属性 | 默认值 | |
0 | Cfg UR Cpl - 配置请求接收到 UR 完成 | RWS | 0b |
1 | Cfg CA Cpl - 配置请求接收到 CA 完成 | RWS | 0b |
2 | Cfg CTO - 配置请求完成超时 | RWS | 0b |
8 | I/O UR Cpl - I/O 请求接收到 UR 完成 | RWS | 0b |
9 | I/O CA Cpl - I/O 请求接收到 CA 完成 | RWS | 0b |
10 | I/O CTO - I/O 请求完成超时 | RWS | 0b |
16 | Mem UR Cpl - 内存请求接收到 UR 完成 | RWS | 0b |
17 | Mem CA Cpl - 内存请求接收到 CA 完成 | RWS | 0b |
18 | Mem CTO - 内存请求完成超时 | RWS | 0b |
7.9.15.11 RP PIO报头日志寄存器(偏移量20h)
图7-260 RP PIO头日志寄存器
Figure 7-260 RP PIO Header Log Register

表7-211 RP PIO报头日志寄存器
Table 7-211 RP PIO Header Log Register
寄存器描述 | 属性 | 默认值 | |
127:0 | TLP 头部 - 与错误相关的 TLP 头部 | ROS | 0 |
7.9.15.12 RP PIO ImpSpec日志寄存器(偏移量30h)
图7-261 RP PIO ImpSpec日志寄存器
Figure 7-261 RP PIO ImpSpec Log Register

表7-212 RP PIO ImpSpec日志寄存器
Table 7-212 RP PIO ImpSpec Log Register
寄存器描述 | 属性 | 默认值 | |
31:0 | RP PIO 实现特定日志 | ROS | 0 |
7.9.15.13 RP PIO TLP前缀日志寄存器(偏移量34h)
如果根端口支持跟踪包含End-End TLP前缀的非张贴请求,则必须实现该寄存器,并且必须有足够的大小来记录任何跟踪请求的End-End TLP前缀的最大数量。参见第2.9.3节。RP PIO TLP前缀日志寄存器中分配的DWORDs大小为RP PIO Log Size
如果RP PIO Log Size小于等于9,则减5;如果RP PIO Log Size大于等于9,则减4。TLP前缀日志的实际大小必须小于或等于根端口的Max End-End TLP前缀字段的值。对于根端口从不发送包含End-End TLP前缀的非张贴请求的情况,允许分配和实现的TLP前缀日志大小为0。任何已分配但未实现的DWORDs必须硬连接为零。
这个寄存器的格式与AER中的TLP前缀日志寄存器相同,尽管这个寄存器的分配大小是可变的,而AER中的寄存器总是4 DWORDs。参见7.8.4.12节。第一TLP前缀日志寄存器包含来自TLP的第一个End-End TLP前缀,第二TLP前缀日志寄存器包含第二个End-End TLP前缀,以此类推。如果TLP包含的TLP前缀少于该寄存器所能容纳的,则任何剩余的TLP前缀日志寄存器必须包含零。
图7-262 RP PIO TLP前缀日志寄存器
Figure 7-262 RP PIO TLP Prefix Log Register

表7-213 RP PIO TLP前缀日志寄存器
Table 7-213 RP PIO TLP Prefix Log Register
寄存器描述 | 属性 | 默认值 | |
127:0 | RP PIO TLP 前缀日志 | ROS | 0 |
夜雨聆风