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