PCIe總線自V2.0加入了功能層復位(Function Level Reset,FLR)的功能。該功能主要針對的是支持多個功能的PCIe設備(Multi-Fun PCIe Device),可以實現只對特定的Function復位,而其他的Function不受影響。當然,該功能是可選的,并非強制的,軟件可以通過查詢配置空間中的設備功能寄存器(Device Capability Register)來查詢該PCIe設備是否支持FLR。如下圖所示:
并可以通過設備控制寄存器(Device Control Register)中的將Initiate Function Level Reset bit置1,來產生FLR。
FLR只復位對應Function的內部狀態和寄存器(使其暫時不變化,Making it quiescent),但是并不影響Sticky bits、有硬件初始化的值(Hardware-initialized bits)和鏈路專用寄存器(比如Captured Power,ASPM Control、Max Payload Size以及VC等寄存器)。如果該設備在FLR前,發出了Assert INTx中斷消息,必須在開始FLR之前在發出對應的Deassert INTx消息,除非該INTx已經被與其他Function共享了。當收到FLR后,該Function的所有的其他功能都應被立即停止(Required to cease)。
此外,PCIe Spec還明確給出了FLR的完成時間應在100ms以內。
PCIe Spec還明確規定了,當某個Function處于FLR狀態時的一些特性:
· 該Function必須將任何軟件可讀取的狀態(可能包括加密信息等)打亂。換句話說,任何內部存儲都必須被清零或者隨機化;
· 該Function必須可以被另一個Diver配置為一般模式;
· 該Function必須為其收到的包含有FLR信息的配置寫(Configuration Write)返回一個Completion,然后再進行FLR操作。
在進入FLR狀態后,還需要:
· 該Function接收到的任何請求都應該被直接丟棄,且不登記(Logging),也不報錯誤。但是FC Credits必須要被更新,以維持鏈路的正常操作;
· 該Function接收到的任何Completion都應該被當做Unexpected Completions,然后直接丟棄,且不登記,也不報錯。
-
寄存器
+關注
關注
31文章
5357瀏覽量
120590 -
總線
+關注
關注
10文章
2890瀏覽量
88159 -
PCIe
+關注
關注
15文章
1241瀏覽量
82747
原文標題:【博文連載】PCIe掃盲——復位機制介紹(FLR)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論