STE 包含每個stream的配置,指示:
? 是否啟用來自device的流量。
? 是否進行stage 1 translation,獲取stage 1 translation tables的配置。
? 是否進行stage 2 translation以及相關(guān)的stage 2 translation tables和VMID。
如果啟用了stage 1,則STE中的S1ContextPtr字段包含一個或多個cd的基址。CD將StreamID與stage 1 translation table基指針(將VA轉(zhuǎn)換為IPA)、per-stream配置和ASID關(guān)聯(lián)起來。
如果多個devices與一個特定的虛擬機相關(guān)聯(lián),這意味著它們共享stage 2 translation tables,也就是說多個ste可能會映射到一個stage 2 translation table。
通常來說,Stream table和stage 2 translation table由hypervisor管理,而與devices相關(guān)的cd和stage 1 translation tables由guest OS管理。此外,hypervisor可以使用單獨的hypervisor stage 1 translations。
在不使用hypervisor的情況下,裸機操作系統(tǒng)管理Streamtable和CDs。
當輸入事務(wù)啟用SubstreamID時,SubstreamID索引CDs以選擇 stage 1 translation context。如果沒有提供SubstreamID,行為取決于ST.S1DSS:
當STE.S1DSS == 0b00,所有流量都有SubstreamID,不帶有SubstreamID的輸入事務(wù)則被中止并記錄一個事件。
當STE.S1DSS == 0b01,沒有SubstreamID的事務(wù)視為配置stage 1-bypass。
當STE.S1DSS == 0b10,沒有SubstreamID的事務(wù)使用Substream=0的CD。在此配置下,SubstreamID=0的事務(wù)將被中止,并記錄一個事件。
當stage 1被啟用時,STE.S1ContextPtr字段給出了以下地址之一(由配置STE.S1Fmt和STE.S1CDMax)確定:
一張CD。
single-level table of CDs的起始地址。
L1CDs的起始地址,L1CD.L2Ptr都指向一個L2CDs的起始地址。L1CDs由SubstreamID的高位索引,L2CDs由SubstreamID的較低位索引。用于L1CDs和L2CDs索引的SubstreamID位由STE.S1Fmt配置。
當同時使用stage 1和stage 2時,S1ContextPtr和L2Ptr地址為IPA,僅使用stage1時為PA。
由CD和STE提供的ASID和VMID值是TLB tag的一部分,用于區(qū)分不同之間的地址空間,或者在接收到TLB invalidation操作時匹配無效的TLB。
Configuration structure example
上圖顯示了一個示例配置,其中StreamID從linear Stream table中選擇一個Ste,Ste指向stage2的translation table,并指向單個stage1的CD配置, 然后CD指向stage1的translation tables。
上圖顯示了一個配置,其中一個STE指向包含多個cd的數(shù)組。SubstreamID選擇其中一個cd,最終確認要用的stage1頁表。
Multi-level Stream and CD tables
上圖顯示了一個更復(fù)雜的布局,其中使用了一個multi-level Stream table。其中兩個STE指向一張CD或一個CD數(shù)組,而第三個STE指向一個multi-level CD table 。
審核編輯:劉清
-
ARM
+關(guān)注
關(guān)注
134文章
9351瀏覽量
377432 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7147瀏覽量
125572 -
虛擬機
+關(guān)注
關(guān)注
1文章
966瀏覽量
29352 -
TLB電路
+關(guān)注
關(guān)注
0文章
9瀏覽量
5342
原文標題:ARM SMMU Data structure之Context Descriptors
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
ARM系列之SMMU總線資料合集
多個設(shè)備是否可以共用一個SMMU StreamID?
SMMU學(xué)習(xí)這一篇就夠了
RK3588 ubunutu pcie虛擬化的SMMU配置在哪里修改呢?
ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版
1線文件結(jié)構(gòu)-1-Wire File Structure

arm smmu的原理

arm smmu的原理與smmu驅(qū)動iommu框架

SystemVerilog中的Packed Structure
SMMU數(shù)據(jù)結(jié)構(gòu)格式
SMMU數(shù)據(jù)結(jié)構(gòu)格式之Level 1 Stream Table Descriptor介紹

ARM SMMU Data structures概述

ARM SMMU Data structures之Stream Table

SMMU VA->PA的轉(zhuǎn)換流程介紹

評論