這篇文章主要介紹事務(Transaction)錯誤、鏈路流量控制(Link Flow Control)相關的錯誤、異常的TLP(Malformed TLP)以及內部錯誤(Internal Errors)等。
事務(Transaction )錯誤
事務錯誤主要包括不支持的請求(Unsupported Request)、Completer Abort、非預期的Completion和Completion超時。該錯誤類型主要通過返回的Completion TLP包頭中的Compl. Status告知Requester,如下圖所示。
不支持的請求(Unsupported Request)主要包括:
1. 請求類型不被當前PCIe設備支持
2. 消息中使用了不支持或者未定義的消息編碼
3. 請求的地址空間超出(或者不在)設備的地址空間中
4. 針對Completer的IO或者存儲映射控制空間(Memory-mapped Control Space)進行的Poisoned寫操作(EP=1)
5. Root或者Switch的Downstream端口接收到針對其二級總線(Secondary Bus)上的不存在的設備的配置請求(Configuration Request)
6. Endpoint接收到Type1型的配置請求
7. Completion中使用了保留的Completion狀態(tài)編碼(參考上面的表格)
8. 設備(的某個功能,F(xiàn)unction)處于D1、D2或者D3hot電源管理狀態(tài)時,卻接收到了除了配置請求和消息之外的內容
Completer Abort(CA)主要包括:
1. Completer接收的特殊請求,只有在違背其規(guī)則的情況下才能對該請求進行響應(返回Completion)
2. 因為某些恒定的錯誤狀態(tài)(Permanent Error Condition),導致Completer無法響應接收到的請求
3. Completer接收到存在訪問控制服務錯誤(Access Control Services Error,ACS Error)的請求
4. PCIe-to-PCI橋接收到針對其連接的PCI設備的請求,但是該PCI設備無法處理該請求
非預期的Completion主要包括:
1. Requester接收到的Completion和其發(fā)出的Request不一致
Completion超時:
所有的PCIe設備都必須支持Completion超時定時器,除非該設備只是用于初始化配置事務的。需要注意的是,PCIe設備必須能夠針對多個事務(Transaction)分別計時。PCIe 1.x和2.0的Spec建議超時時間最好設置為10ms至50ms之間,對于一些特殊情況,超時時間最低可設置為30us。PCIe 2.1 Spec開始,增加了第二設備控制寄存器(Device Control Register 2)用于查看和控制超時時間的值。如下圖所示:
如果,某個請求對應多個Completion,那么除了最后一個Completion,其他的Completion不會造成該請求的定時器停止計時。
鏈路流量控制(Link Flow Control)相關的錯誤
鏈路流量控制相關的錯誤主要有:
1. 在FC初始化時,鏈路相鄰設備無法完成針對任何一個VC的,最小的FC Credits的交換更新(Advertises)
2. 鏈路相鄰設備交換更新(Advertises)的FC Credits超過了最大值(Data Payload最大為2047,Header最大為127)
3. 鏈路相鄰設備交換更新時,F(xiàn)C Credits為非零值,且該鏈路的FC Credits之前已經被初始化為無限值了
4. 接收端Buffer溢出,導致數(shù)據(jù)丟失(可選的,但是如果使能,則認為是Fatal Error)
關于Flow Control可以參考之前的文章:http://blog.chinaaet.com/justlxy/p/5100053464
和http://blog.chinaaet.com/justlxy/p/5100053465
異常的TLP(MalformedTLP)
異常的TLP(Malformed TLP)錯誤主要有:
1. Data Payload超過了最大值(Max Payload Size)
2. 數(shù)據(jù)長度(Data Length)與包頭中的長度值不一致
3. 存儲地址起始位置跨越了4KB邊界(Naturally-aligned 4KB Boundary)
4. TD(TLP Digest)的值與ECRC是否使用不一致
5. 字節(jié)使能沖突(Byte Enable Violation)
6. 未定義的類型值(Type Field Values)
7. Completion違反了RCB(Read Completion Boundary)值
8. 針對非配置請求返回的Completion中的狀態(tài)為配置請求重試狀態(tài)(Configuration Request Retry Status)
9. TC域包含了一個未被分配到當前使能的VC的值(也被稱為TC Filtering)
10. IO或者配置請求沖突(可選的)
11. 中斷Emulation消息向下發(fā)送(可選的)
12. TLP前綴錯誤(具體請參考PCIe Spec V2.0的2.2~2.6相關章節(jié))
內部錯誤(Internal Errors)
一般指的是Switch等橋設備內部產生的錯誤
-
PCIe
+關注
關注
15文章
1235瀏覽量
82597 -
配置
+關注
關注
1文章
188瀏覽量
18376
原文標題:【博文連載】PCIe掃盲——PCIe錯誤源詳解(二)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論