3.8 PCIe控制器——运行机制——错误处理
pcie控制器中存在多种类型的错误,这些错误有不同的处理方式,大致可分为correctable error和uncorrectable error,其中uncorrectable error可分为fatal error和non-fatal error
一、概述
correctable error,可修正的错误,通常由硬件进行处理
uncorrectable error,不可修正错误,又分为
non-fatal error,致命错误,由系统软件处理
fatal error,非致命错误,由设备中专用的软件进行处理
二、error分析
2.1 correctable error
2.2 uncorrectable error
2.2.1 fatal error
2.2.2 non-fatal error
三、不同类型设备error处理
3.1 通用异常处理
描述了无论是RC还是EP设备,都具有的异常处理方式。
3.1.1 完成报文异常处理
当完成报文的状态不是SC,代表该请求失败了;对于Non-posted请求,只要完成报文没有返回,请求就没有完成,在该两种情况下,PCIe控制器的系统总线(AXI)上会发出SLVERR或者异常的response信号。
3.1.2 错误转发(data poisoning)
出现data poisoning时,接收到的TLP报文的EP字段将会置1,此时PCIe控制器解析到该字段后在系统总线(AXI)上会发出SLVERR或者异常的response信号。
出现场景如下:
1)从内存读数据时发生uncorrectable error
2)想内存写数据时出现parity error
3)数据buffer或者cache出现数据完整性错误
3.2 EP错误处理
3.3 RC错误处理
RC特有的异常处理。
3.3.1 error message的处理
带内error message:若EP设备或者switch自身产生错误,会根据错误类型发出message报文,此时RC接收并解析该报文,并作处理;
RC支持AER(Advance Error Report),RC会从error message中提取RequestID字段,并记录到RC的error source identification寄存器中,如图所示是该寄存器字段描述