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