PCIe掃盲 復位機制介紹(FLR)

2021-09-25 02:00:07 字數 1201 閱讀 2226

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的內部狀態和暫存器(使其暫時不變化,****** 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必須將任何軟體可讀取的狀態(可能包括加密資訊等)打亂。換句話說,任何內部儲存都必須被清零或者隨機化;

·         該function必須可以被另乙個diver配置為一般模式;

·         該function必須為其收到的包含有flr資訊的配置寫(configuration write)返回乙個completion,然後再進行flr操作。

在進入flr狀態後,還需要:

·         該function接收到的任何請求都應該被直接丟棄,且不登記(logging),也不報錯誤。但是fc credits必須要被更新,以維持鏈路的正常操作;

·         該function接收到的任何completion都應該被當做unexpected completions,然後直接丟棄,且不登記,也不報錯。

PCIe掃盲 PCIe錯誤源詳解(一)

這篇文章來詳細地分析一下各種錯誤源的產生原理,由於內容較多,因此分為兩篇文章。第一篇介紹一下ecrc校檢錯誤和data poisoning等 第二篇文章介紹事務 transaction 錯誤 鏈路流量控制 link flow control 相關的錯誤 異常的tlp malformed tlp 以及...

PCIe掃盲 PCIe匯流排體系結構入門

和很多的序列傳輸協議一樣,乙個完整的pcie體系結構包括應用層 事務層 transaction layer 資料鏈路層 data link layer 和物理層 physical layer 其中,應用層並不是pcie spec所規定的內容,完全由使用者根據自己的需求進行設計,另外三層都是pcie ...

PCIe掃盲 PCIe匯流排事務層入門(一)

在介紹事務層之前,首先簡單地了解一下pcie匯流排的通訊機制。假設某個裝置要對另乙個裝置進行讀取資料的操作,首先這個裝置 稱之為requester 需要向另乙個裝置傳送乙個request,然後另乙個裝置 稱之為completer 通過completion packet返回資料或者錯誤資訊。在pcie...