【91】PCIe header format分类

  •     哪些错误会记录header

    PCIe错误产生后,如果对应的错误没有被mask住,并且错误类型又是可以产生header log的错误,那么在AER cap中header log regs中会记录对应的header。

【91】PCIe header format分类_第1张图片

【91】PCIe header format分类_第2张图片

     具体哪些错误会记录header log见下面table中介绍

Table 6-2 General PCI Express Error List
Table 6-3 Physical Layer Error List
Table 6-4 Data Link Layer Error List
Table 6-5 Transaction Layer Error List

    具体需要记录header的错误类型有:Uncorrectable Internal Error(optional)、Poisoned TLP Received、Poisoned TLP Blocked、ECRC Check Failed、UR、Completion Timeout(如果completion timeout prefix/header log capable为1)、Completer Abort、Unexpected Completion、ACS Violation、MC Blocked TLP、AtomicOp Egress Blocked、TLP Prefix Blocked、Malformed TLP。

    Completion Timeout比较特殊,需要看 Advanced Error Capabilities and Control Register (Offset 18h)的Completion Timeout Prefix/Header Log Capable bit是否为1。

【91】PCIe header format分类_第3张图片

  • AER server对head log的打印

    linux AER server的__printer_tlp_header函数会打印出错的设备的header log reg(如果把整条链路打通的情况下),比如下面的打印TLP Header:4a000001 04000004 00000000 00000000

【91】PCIe header format分类_第4张图片

  • 翻译过程

    我们拿着4a000001 04000004 00000000 00000000就需要去spec看到底是类型的header(其实就是查询各种table)。上图后面的注释就是我翻译后的结果:

4a000001:3DW的completion with data的header。

04000004:completer ID为04:0.0,completion status是SC,byte count为4Byte。

00000000:request ID为0:0.0。

    也就说,CPU(0:00.0)访问EP(04:00.0),但是04:00.0超时没有返回completion,导致CPU出现completion timeout的错误。由于没有抓trace,我们不知道是CPU发起了memory read EP的请求还是CPU发起的configuration read EP的请求,但是知道EP超时没有返回completion。

【91】PCIe header format分类_第5张图片

【91】PCIe header format分类_第6张图片

【91】PCIe header format分类_第7张图片

  • Spec对header format的分类

1、TLP header DW0

PCIe TLP header DW0的格式都是一样的,如Figure 2-5显示。

【91】PCIe header format分类_第8张图片

【91】PCIe header format分类_第9张图片

PCIe的TLP header可能是4DW也可能是3DW,其中DW0的byte0的bit7-5(Fmt[7:5])决定了TLP header format是3DW还是4DW,header后面有没有data。

DW0的byte0的bit4-0(Type[4:0])决定了TLP的类型。

常见的TLP header类型就是memory readmemory write、I/O read、I/O write、configuration read type 0、configuration write type 0、configuration read type 1、configuration write type 1、Cpl、CplD这10种。memory readmemory write有3DW或者4DW的format。因此,常用的TLP header有12种组合(其他还有一些不常见的,见table 2-3):

(1)3DW no data, memory read(byte0为0000 0000b)

(2)4DW no data, memory read(byte0为0010 0000b)

(3)3DW with data, memory write(byte0为0100 0000b)

(4)4DW with data, memory write(byte0为0110 0000b)

(5)3DW no data, I/O read(byte0为0000 0010b)

(6)3DW with data, I/O write(byte0为0100 0010b)

(7)3DW no data, config read type 0 (byte0为0000 0100b)

(8)3DW with data, config write type 0 (byte0为0100 0100b)

(9)3DW no data, config read type 1(byte0为0000 0101b)

(10)3DW with data config write type 1(byte0为0100 0101b)

(11)3DW no data, completion(byte0为0000 1010b)

(12)3DW with data, completion(byte0为0100 1010b)

【91】PCIe header format分类_第10张图片

【91】PCIe header format分类_第11张图片

2、4DW no data,memory read和4DW with data,memory write

对于4DW no data,memory read (byte0为0010 0000b)和4DW with data, memory write(byte0为0110 0000b),TLP header 格式如下

【91】PCIe header format分类_第12张图片

    其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。

3、3DW no data,memory read和3DW with data,memory

    对于3DW no data, memory read(byte0为0000 0000b)和3DW with data, memory write(byte0为0100 0000b),TLP header 格式如下

【91】PCIe header format分类_第13张图片

    其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。

4、3DW no data, I/O read和3DW with data, I/O write

    3DW no data, I/O read(byte0为0000 0010b)和3DW with data, I/O write(byte0为0100 0010b),TLP header 格式如下

【91】PCIe header format分类_第14张图片

    其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。

5、configuration transaction

    3DW no data, config read type 0 (byte0为0000 0100b)、3DW with data, config write type 0 (byte0为0100 0100b)、3DW no data, config read type 1(byte0为0000 0101b)、3DW with data config write type 1(byte0为0100 0101b),TLP header 格式如下:

【91】PCIe header format分类_第15张图片

    其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。

    其中Byte10的bit3-0为Extended Register Number[3:0],Byte11的bit5-0为Register Number[5:0]。

6、completion transaction

    3DW no data, completion(byte0为0000 1010b)和3DW with data, completion (byte0为0100 1010b), TLP header格式如下:

【91】PCIe header format分类_第16张图片

    其中completer ID和Requester ID的高8bit为bus,中间5bit为device,低3bit为function。

【91】PCIe header format分类_第17张图片


 

你可能感兴趣的:(PCIe协议及应用,PCIe,header,header,log)