乐于分享
好东西不私藏

PCIe5.0标准协议规范中文-7. 软件初始化和配置-7.9 Additional PCI and PCIe Capabilities-7.9.15 DPC扩展能力

PCIe5.0标准协议规范中文-7. 软件初始化和配置-7.9 Additional PCI and PCIe Capabilities-7.9.15 DPC扩展能力

7.9.15 DPC扩展能力

下游端口控制(DPC)扩展能力是一种可选的规范功能,它为下游端口提供了一种机制,以包含不可纠正的错误,并使软件能够从其中恢复。见第6.2.10节。此功能可以通过根端口或交换机下游端口来实现。它不适用于任何其他设备/端口类型。

如果下游端口实现了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)

图7-250 DPC扩展能力报头

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)

图7-251 DPC能力寄存器

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)

图7-252 DPC控制寄存器

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)

图7-253 DPC状态寄存器

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)

图7-254 DPC错误源ID寄存器

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)

这个寄存器只存在于支持RP扩展DPC的根端口中。参见6.2.10.3节。

图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)

这个寄存器只存在于支持RP扩展DPC的根端口中。参见6.2.10.3节。

图7-256 RP PIO Mask Register

表7-207 RP PIO掩码寄存器

Table 7-207 RP PIO Mask Register

7.9.15.8 RP PIO严重性寄存器(偏移量14h)

这个寄存器只存在于支持RP扩展DPC的根端口中。参见6.2.10.3节。

图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)

这个寄存器只存在于支持RP扩展DPC的根端口中。参见6.2.10.3节。

图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)

这个寄存器只存在于支持RP扩展DPC的根端口中。参见6.2.10.3节。

图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)

此寄存器仅在支持RP扩展DPC的根端口中实现。RP PIO报头日志寄存器包含与记录的RP PIO错误相关的请求TLP的报头。详情请参考6.2.10.3节。这个寄存器是16字节,其格式与AER中的头日志寄存器相同。参见7.8.4.8节。

图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)

这个寄存器只允许在支持RP扩展DPC的根端口中实现。如果实现了,RP PIO ImpSpec日志寄存器包含与记录的错误相关的特定于实现的信息,例如,指示请求TLP的来源。如果RP PIO Log Size字段的值大于等于5,则为该寄存器分配空间。如果为寄存器分配了空间,但寄存器没有实现,位必须硬连接到0b。

图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)

这个寄存器只允许在支持RP扩展DPC的根端口中实现。RP PIO TLP前缀日志寄存器包含与记录的RP PIO错误相对应的TLP的End-End TLP前缀。详情请参考6.2.10.3节。

如果根端口支持跟踪包含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