11-Reliability, Availability, and Serviceability (RAS) Extensions
引流關鍵詞: 中斷、同步異常、異步異常、irq、fiq、BL1,BL2,BL3,BL31,BL32,BL33,AP_BL1,AP_BL2,AP_BL3,AP_BL31,AP_BL32,AP_BL33,SCP_BL1,SCP_BL2,BL0,BL30, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內存管理、頁表…
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
[專欄目錄]-ATF/FF-A/specification學習
11.可靠性、可用性和可服務性 (RAS) 擴展
本文檔描述了TF-A對 Arm 可靠性、可用性和可服務性 (RAS) 擴展的支持。RAS 是 Armv8.2 及更高版本 CPU 的強制擴展,也是基本 Armv8.0 架構的可選擴展。
與EHF一起,對 RAS 擴展的支持啟用了處理平臺錯誤的固件優先范例:錯誤導致的異常被路由到 EL3 并在 EL3 中處理。所述錯誤是同步外部中止 (SEA)、異步外部中止(信號為 SError)、故障處理和錯誤恢復中斷。EHF文檔提到了各種錯誤處理用例。
關于 Arm RAS 擴展、標準錯誤記錄的描述,以及 RAS 術語的準確定義,請參考 Arm 架構參考手冊。本文檔的其余部分假定您熟悉架構和術語。
11.1。概述
如上所述,TF-A中的 RAS 支持支持路由和處理由 EL3 中的平臺錯誤導致的異常。它允許平臺定義外部中止處理程序,并注冊 RAS 節點和中斷。RAS 框架還為訪問 RAS 擴展引入的標準錯誤記錄提供了幫助程序。
RAS_EXTENSION設置為的構建選項1包括運行時固件中的 RAS;EL3_EXCEPTION_HANDLING并且HANDLE_EA_EL3_FIRST還必須設置1。RAS_TRAP_LOWER_EL_ERR_ACCESS控制從較低 EL 對 RAS 錯誤記錄寄存器的訪問。
查看更多關于參與 RAS 框架的信息。
11.2. 平臺 API
RAS 框架允許平臺為外部中止、不可包含的錯誤、雙重錯誤和由 EL3 執行引起的錯誤定義處理程序。請參閱RAS 移植指南。
11.3. 注冊 RAS 錯誤記錄
RAS 節點是系統中的組件,能夠通過一種通知機制(SEA、SError 或中斷)向 PE 發送錯誤信號。RAS 節點包含一個或多個錯誤記錄,這些錯誤記錄是節點通過其通告信號錯誤的各種屬性的寄存器。Arm 建議以標準錯誤記錄格式實現錯誤記錄。RAS 架構允許通過系統或內存映射寄存器訪問錯誤記錄。
平臺應枚舉為每個錯誤記錄提供的錯誤記錄:
-
用于探測錯誤記錄的處理程序;
-
當探測識別出錯誤時,一個處理程序來處理它;
-
對于內存映射錯誤記錄,其基地址和大小(KB);對于系統寄存器訪問記錄,記錄的開始索引和從該索引開始的連續記錄數;
-
任何特定于節點的輔助數據。
通過提供此信息,當運行時固件接收到其中一種通知機制時,RAS 框架可以遍歷并探測錯誤記錄以查找錯誤,并調用適當的處理程序來處理它。
RAS 框架提供了用于填充錯誤記錄信息的宏。宏是版本化的,撰寫本文時的最新版本是 1。這些宏從其參數創建類型結構,然后將其傳遞給探測和錯誤處理程序。struct err_record_info
對于內存映射錯誤記錄:
ERR_RECORD_MEMMAP_V1(base_addr, size_num_k, probe, handler, aux)而且,對于系統寄存器:
ERR_RECORD_SYSREG_V1(idx_start, num_idx, probe, handler, aux)探針處理程序必須具有以下原型:
typedef int (*err_record_probe_t)(const struct err_record_info *info,int *probe_data);如果檢測到錯誤,則探測處理程序必須返回非零值,否則返回 0。probe_data輸出參數可用于將探針產生的任何有用信息傳遞給錯誤處理程序(見下文)。例如,它可以返回記錄的索引。
錯誤處理程序必須具有以下原型:
typedef int (*err_record_handler_t)(const struct err_record_info *info,int probe_data, const struct err_handler_data *const data);常量參數描述了錯誤的data各種屬性,包括錯誤原因、異常綜合癥,以及flags來自 cookie頂級handle異常處理程序的參數。
該平臺應使用上述宏填充一個數組,并使用宏將其注冊到 RAS 框架REGISTER_ERR_RECORD_INFO(),并將描述記錄的數組的名稱傳遞給它。請注意,宏必須在定義數組的同一文件中使用。
11.3.1. 標準錯誤記錄助手
TF-A RAS 框架為標準錯誤記錄提供探針處理程序,用于內存映射和系統寄存器訪問:
int ras_err_ser_probe_memmap(const struct err_record_info *info,int *probe_data);int ras_err_ser_probe_sysreg(const struct err_record_info *info,int *probe_data);當平臺枚舉錯誤記錄時,對于那些標準錯誤記錄格式的記錄,這些助手可能會被使用而不是推出自己的。上面的兩個助手:
在標準錯誤記錄中檢測到錯誤時返回非零值;
檢測到錯誤時設置probe_data為錯誤記錄的索引。
11.4. 注冊 RAS 中斷
RAS 節點可以通過引發故障處理和/或錯誤恢復中斷向 PE 發出錯誤信號。為了使中斷工作的固件優先處理范例,平臺必須設置并注冊EHF。請參閱與異常處理框架的交互。
對于每個 RAS 中斷,平臺必須提供 type 的結構:struct ras_interrupt
-
中斷號;
-
關聯的錯誤記錄信息(對應的指針 );struct err_record_info
-
(可選)cookie。
平臺需要定義一個 的數組,并使用宏將其注冊到 RAS 框架 ,并傳遞數組的名稱。請注意,宏必須在定義數組的同一文件中使用。struct ras_interruptREGISTER_RAS_INTERRUPTS()
的數組必須按照中斷號的遞增順序進行排序。這允許快速查看處理程序以服務 RAS 中斷。struct ras_interrupt
11.5。雙重故障處理
當一個錯誤被通知給 PE 時,一個雙重故障條件出現,同時處理先前通知的錯誤仍在進行中。當出現雙重故障情況時,Arm RAS 擴展只需要處理程序執行系統的有序關閉,因為恢復可能是不可能的。
Armv8.4 的 RAS 擴展部分引入了新的架構特性來處理雙重故障情況,特別是引入了寄存器位NMEA和 EASE位SCR_EL3。引入這些是為了幫助 EL3 軟件運行其進入/退出例程的一部分,同時暫時屏蔽異常——這意味著,在此類系統中,外部 Aborts/SErrors 在發生時不會立即處理,而只會在異常再次被取消屏蔽后處理。
TF-A出于遺留原因,執行整個 EL3,所有異常都未屏蔽。這意味著所有路由到 EL3 的異常都會立即得到處理。因此, TF-A 能夠在軟件中檢測雙故障條件,而不需要 Armv8.4 雙故障架構擴展的預期優勢。
雙重錯誤是致命的,并在平臺雙重錯誤處理程序處終止,并且不會返回。
11.6。參與 RAS 框架
啟用 RAS 支持是由三個不同但相關的構建選項構建的平臺選擇:
-
RAS_EXTENSION=1在運行時固件中包含 RAS 框架;
-
EL3_EXCEPTION_HANDLING=1允許在 EL3 處處理異常。請參閱 與異常處理框架的交互;
-
HANDLE_EA_EL3_FIRST=1啟用外部中止和 SError 到 EL3 的路由。
TF-A中的 RAS 支持引入了plat_ea_handlerEL3 中的 External Abort 處理程序的默認實現 。當RAS_EXTENSION 設置為 時1,它會首先調用ras_ea_handler()函數,該函數是頂級 RAS 異常處理程序。ras_ea_handler負責遍歷平臺提供的錯誤記錄,探測它們,當發現錯誤時,查找并調用相應的錯誤處理程序。
請注意,如果平臺選擇覆蓋該plat_ea_handler函數并打算使用 RAS 框架,則必須 ras_ea_handler()從內部顯式調用。
同樣,對于 RAS 中斷,框架定義 ras_interrupt_handler(). RAS 框架安排在 EL3 發生 RAS 中斷時調用它。該函數將平臺提供的已排序中斷數組一分為二,以查找與中斷號相關的錯誤記錄信息。然后調用該記錄的錯誤處理程序來處理錯誤。
11.7。與異常處理框架的交互
如前面部分所述,RAS 框架與EHF交互以仲裁 RAS 異常的處理與其他路由到 EL3 的異常。這意味著平臺必須劃分優先級以處理 RAS 異常。然后,平臺必須將宏定義PLAT_RAS_PRI為用于 RAS 異常的優先級。平臺通常希望為 RAS 處理分配最高的安全優先級。
中斷和非中斷異常的處理遵循EHF 文檔中概述的順序。即,對于中斷,優先級管理是隱含的;但對于非中斷異常,它們使用EHF API是顯式的。
總結
以上是生活随笔為你收集整理的11-Reliability, Availability, and Serviceability (RAS) Extensions的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18-Chain of trust bi
- 下一篇: 12- Library at ROM