[FF-A]-02-Concepts
引流關鍵詞: TF-A,TF-M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,終端安全,secureboot,security,virtulization, FF-A,FFA,SPMC,SPM,SPMD,hypervisor,EP,TCB,context,SP,SPM,VM
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
FF-A系列
[FF-A]-01-Introduction
[FF-A]-02-Concepts
[FF-A]-03-Partition setup
目錄
- Concepts
- 2.1 Partition manager
- 2.1 SPM architecture
- 2.2.1 SPM architecture with Secure EL2
- 2.2.2 SPM architecture without Secure EL2
- 2.2.2.1 S-EL1 SPM core component
- 2.2.2.2 Secure Supervisor mode SPM core component
- 2.2.2.3 EL3 SPM core component
- 2.3 FF-A instances
- 2.4 Conduits
- 2.5 Execution state
- 2.6 Memory types
- 2.7 Memory granularity and alignment
- 2.8 Partition identification and discovery
- 2.9 Execution context
- 2.10 System resource management
- 2.11 Primary scheduler
- 2.12 Run-time states
Concepts
術語 & 概念
sp
spm
vm
hypervisor
ep : endpoint
TCB
EC : execution contexts 執行上下文
2.1 Partition manager
partition manager負責根據其manifest中規定的要求初始化分區(請參閱第 3 章分區設置)。 partition 描述了系統物理地址空間中的區域以及它需要通過其manifest訪問的資源。 partition manager使用manifest來驗證資源請求并在驗證成功時將資源分配給endpoint。
Firmware Framework相對于partition manager和partition定義了以下信任范圍:
- SPM 是分配給安全狀態的系統資源或物理地址空間范圍的 TCB 的一部分。
- hypervisor和SPM 都是分配給非安全狀態的系統資源或物理地址空間范圍的TCB 的一部分。
- VM 必須信任 Hypervisor 和 SPM 以保護其資源免受其他端點的影響。
- SP 必須信任 SPM 以保護其安全資源免受其他 SP 的影響。
- SP 不得信任其有權訪問的任何非安全資源的狀態。 因此,它不能信任也可以訪問相同資源的管理程序或 NS endpoint。
partition manager通過利用 CPU 和系統架構實現的以下功能來保護分區資源免受其他 FF-A 組件的影響:
- Arm? TrustZone 安全擴展用于保護分配給處于安全狀態的 FF-A 組件的安全物理地址空間范圍和系統資源免受處于非安全狀態的組件的影響。
- Armv8-A VMSA 提供的基于虛擬內存的內存保護用于保護分配給安全狀態和FF-A 組件的物理地址空間范圍免受其他FF-A 組件的影響。 SPM 對它的使用在 2.2 SPM 體系結構中進行了描述。 Hypervisor 使用此功能如下。
(1)、如果 EL1&0 階段 2 轉換機制,當啟用 EL2 由處于非安全狀態的系統內存管理單元 (SMMU) 實現時,管理程序使用它來限制來自設備上游的非安全物理地址空間的可見性 SMMU 僅分配給控制設備的 VM 的那些區域。
(2)、如果安全 EL1&0 階段 2 轉換機制(當啟用 EL2 由處于非安全狀態的 CPU 實現時),則管理程序使用它來將非安全物理地址空間的可見性從 VM 限制到僅那些具有 已分配給 VM。
partition manager使partition能夠交換消息(請參閱第 4 章消息傳遞)。 它還使分區能夠管理對從其他分區分配給它的內存區域的訪問(請參閱第 5 章內存管理)。
在本框架的實現中,SPM 必須使用本規范中描述的概念和接口來履行前述職責。 Hypervisor 只能將框架用于正常世界和安全世界之間的通信和內存管理。 在這種情況下,Hypervisor 必須:
- 初始化VM 并通過實現定義機制將它們與其他VM 隔離。
- 實施分區管理器組件,該組件使用固件框架來啟用兩個端點之間的通信和內存管理。 例如,這可能是在 Hypervisor 中實現的 FF-A 驅動程序。
在此版本的固件框架中,假設分區管理器是通過 IMPLEMENTATION DEFINED 機制初始化的。
2.1 SPM architecture
SPM 的職責分為以下兩個組件:
(1)、SPM Core (SPMC) 組件負責:
? 啟動時的分區初始化和隔離。
? 運行時的分區間隔離。
? 運行時的分區間通信:
(a)、S-Endpoints。
(b)、S-Endpoints和NS-Endpoints。
(2)、SPM Dispatcher (SPMD) 組件負責:
? SPM 內核在啟動時初始化。
? 將FF-A 呼叫從普通世界轉發到SPMC。
? 將FF-A 呼叫從SPMC轉發到普通世界。
當不需要區分這兩個組件時,使用術語 SPM。 這兩個組件的一些屬性如下:
- 兩個組件都可以訪問整個物理地址空間,并且是可信計算基礎的一部分。
- 如果兩個組件位于不同的異常級別:
(1)、他們必須實現并報告一個相互兼容的固件框架版本。 詳見 8.1.3 SPM 使用。
(2)、他們必須使用本規范中定義的 ABI 進行通信。 - SPMD 用于初始化 SPMC 的機制是 IMPLEMENTATION DEFINED。
- SPMD 組件必須在 AArch64 的 EL3 或 AArch32 執行狀態的監視器模式下執行。
如下表格中列出了 SPMC 配置:
下表列出了該版本框架支持的 SPMC 和 SP 配置的組合:
? 第一行列出了所有可能的 SP 配置。
? 第一列列出了所有可能的 SPMC 配置。
? 行與列的交叉表示該行中的SP 配置是否受該列中的SPMC 配置支持。
2.2.1 SPM architecture with Secure EL2
S-EL2 SPMC(參見表 2.1 中的 SPM 配置 2)是在 Armv8.4 或更高版本系統上在安全狀態下執行最小特權原則的基礎,如第 1 章介紹中所述。 它必須至少支持以下 SP 配置之一。
(1)、 SPMC 使用 Armv8.1 VHE 來管理一個或多個運行在 S-EL0 或 Secure User 模式下的 SP。 它履行了 2.2 SPM 架構中列出的所有職責。 分配給 SP 的物理地址空間通過安全 EL2&0 轉換機制實現的單級地址轉換與其他 FF-A 組件隔離。
(2)、SPMC管理一個或多個以S-EL1或S-Supervisor模式運行的SP。 它履行了 2.2 SPM 架構中列出的所有職責。 當啟用 EL2 時,分配給 SP 的物理地址空間通過安全 EL1&0 第 2 階段轉換機制與其他 FF-A 組件隔離。
這些配置的示例如圖 2.1 所示
2.2.2 SPM architecture without Secure EL2
2.2.2.1 S-EL1 SPM core component
2.2.2.2 Secure Supervisor mode SPM core component
2.2.2.3 EL3 SPM core component
2.3 FF-A instances
FF-A instance是處于異常級別邊界的兩個 FF-A 組件的有效組合。 這些實例用于描述固件框架指定的接口。 FF-A 實例通過smc/hyc通信。 每個接口中調用者和被調用者的職責取決于調用它的 FF-A 實例
- 一個實例是physical instances,如果:
每個組件都可以獨立管理其翻譯機制。
每個組件的轉換機制將虛擬地址映射到物理地址。 - 如果實例不是物理實例,則實例是virtual instances。
- SPMC 和SPMD 之間的實例稱為secure physical FF-A instances。
- SPMC 和 SP 之間的實例稱為secure virtual FF-A instances。
- 在普通世界中,實例之間:
Hypervisor 和 VM 稱為non-secure virtual FF-A instances。
Hypervisor 和 SPMD 被稱為non-secure physicalFF-A instances。
操作系統內核和 SPMD 在沒有hypervisor的情況下稱為non-secure physicalFF-A instances。
總結: 以上廢話那么多,其實就是說兩個意思:
- 1、instance的概念,如下圖所示,紅色圈起來了
- 2、有兩種instance : physical FF-A instances 和 virtual FF-A instances. 如果instance兩側的組件都能有獨立的MMU,則稱之為物理的instance,反之則稱為虛擬的instance
2.4 Conduits
2.5 Execution state
- The SPM in S-EL2 or EL3 must run in AArch64.
- The SPM in S-EL1 could run in AArch64 or AArch32.
- The Hypervisor in EL2 must run in AArch64.
- A S-EL0 SP could run in AArch64 or AArch32.
- An endpoint in S-EL1 or EL1 could run in either AArch64 or AArch32
總結:
1、SPM、Hypervisor 必需是aarch64,即EL2必需是64位
2、SPM 運行在S-EL1時(即SPMC at S-EL1), 可以是aarch64 也可以是 aarch32
3、S-EL1 SP、EL1 SP 可以是aarch64也可以是aarch32
4、S-EL0 SP 可以是aarch64也可以是aarch32
2.6 Memory types
在system reset 或 during system boot期間,每個內存區域都被分配給安全或非安全物理地址空間。 Normal World只能訪問非安全物理地址空間中的內存區域。 Secure World可以訪問兩個地址空間中的內存區域。 轉換表描述符中的非安全 (NS) 屬性位確定訪問是安全還是非安全內存。 在這個版本的框架中:
? 使用任何組件的轉換機制中設置的 NS 位訪問的內存稱為Normal Memory。
? 在組件轉換機制中清除 NS 位的情況下訪問的內存稱為Secure Memory。
2.7 Memory granularity and alignment
2.8 Partition identification and discovery
- Partitions是由16-bits ID和UUID(Unique Universal Identifier)標志的
- 一個Partition可以使用FFA_ID_GET來獲取自己的ID
- 所有的FF-A組件都可以使用FFA_PARTITION_INFO_GET獲取其它SP的ID
- 每一個SP都有一個ID,這個ID可以是定義在SP的manifest中的,也可以是在開機的時候動態分配的
2.9 Execution context
- 每一個endpoint都有一個或多個EC(execution contexts), 一個EC包含通用寄存器、系統寄存器、任何memory map的寄存器。這些寄存器必須由SPM maintained.
- SPM負責allocating、initializing、running這些SP中的EC,可能是physical PE,也可能是virtual PE.
- 一個EC由16-bit ID標志,這個ID也稱為vCPU或執行上下文ID
術語
- UP endpoint : 一個SP中只有EC,也就只有一個PE
- MP endpoints:一個SP中有多個EC
migrating(遷移):
- UP endpoint必須能夠migrating
- MP edpoints可以在這些PE之間migrating,也可以固定到特殊PE上(這種也叫pinned contexts)
- migrating的能力規定在endpoint manifest中
- S-EL0 partition必須是UP endpoint
一個SP中EC的個數不一定等于PE的個數,這個是在endpoint的manifest規定的。例如在VM的manifest規定哪些vcpu可以使用
2.10 System resource management
2.11 Primary scheduler
2.12 Run-time states
- Idle 閑置的。 執行上下文正在等待分配 CPU 周期來完成工作。
- Busy 忙碌的。 執行上下文已被分配 CPU 周期并正在執行工作,例如,運行應用程序線程來處理一條或多條消息。
- Preempted 被搶占。 執行上下文在工作時被中斷搶占。
總結
以上是生活随笔為你收集整理的[FF-A]-02-Concepts的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: itchat群机器人的自动画实现
- 下一篇: [architecture]-处理器的顺