0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM SMMU Data structures之Stream Table

芯片驗(yàn)證工程師 ? 來源:芯片驗(yàn)證工程師 ? 2023-05-11 09:22 ? 次閱讀

incoming transaction的StreamID可以找到一個STE。SMMU支持兩種Stream table格式,格式由Stream table base registers設(shè)置。

傳入的StreamID會根據(jù)指定的table size進(jìn)行范圍檢查,StreamID超出范圍,則transaction就會被terminated,并且記錄事件C_BAD_STREAMID。

當(dāng)支持兩個Security states時,如SMMU_S_IDR1.SECURE_IMPL == 1所示,使用SEC_SID標(biāo)識transaction 是 Secure or Non-secure,后續(xù)使用各自獨(dú)立的軟件接口和數(shù)據(jù)結(jié)構(gòu)。

Linear Stream Table

bdd898a8-ef4e-11ed-90ce-dac502259ad0.jpg

Linear Stream Table

linear Stream table是 STE 的連續(xù)數(shù)組,由 StreamID 從 0 開始索引。該大小可配置為2^n ,最多為 SMMU 在硬件中支持的最大 StreamID 位數(shù)。

2-level Stream Table

bde9973e-ef4e-11ed-90ce-dac502259ad0.jpg

Two-level Stream Table with SPLIT == 8

2-level Stream table包含一個top-level table,該表包含指向多個second-level tables(STE 線性數(shù)組)的指針。整個結(jié)構(gòu)涵蓋的 StreamID 范圍可配置為 SMMU 支持的最大數(shù)量,但second-level tables不必完全填充,并且大小可能會有所不同。這節(jié)省了內(nèi)存并避免了對非常大的 StreamID 空間進(jìn)行大量連續(xù)分配物理空間的要求。top-level descriptors包含指向second-level table的指針以及該second-level table表示的 StreamID 范圍。每個second-level table的指針(descriptor )也可以標(biāo)記為invalid。

top-level table由 StreamID[n:x] 索引,其中 n 是覆蓋的最高 StreamID 位,x 是由 SMMU_(S_)STRTAB_BASE_CFG.SPLIT 給出的可配置分割點(diǎn)。second-level tables 的索引最多為 StreamID[x - 1:0],具體取決于每個表的跨度(span)。

SMMU_IDR0.ST_LEVEL 字段可以指示是否支持2-level Stream table。在支持2-level Stream Tables的情況下,可以使用 6、8 和 10 位的分割點(diǎn)。SMMU實(shí)現(xiàn)可以支持linear Stream Table,或者同時支持 linear和2-level Stream Table。

支持超過 64 個 StreamID(6 位 StreamID)的 SMMU 必須支持2-level Stream tables。

支持少于64個StreamID的SMMU實(shí)現(xiàn)也可能支持 2-level Stream Tables,但這樣做通常沒有用,因?yàn)樗衧treams 可以填充到一個second-level table。意味著當(dāng)linear Stream table的最大大小而無法容納進(jìn)一個4KB頁面時,就必須支持two-level tables。

be1cc852-ef4e-11ed-90ce-dac502259ad0.jpg

be2f1ef8-ef4e-11ed-90ce-dac502259ad0.png

在這個例子中:

? StreamIDs 0-1023(4 × 8-bit level 2 tables)被表示,但不是所有l(wèi)evel 2 tables都有效。

? StreamIDs 0-255 由位于 0x1000 的 STE 數(shù)組。

? StreamIDs 256-259 由位于 0x2F20 的 STE 數(shù)組。

? StreamIDs 512-767 都是無效的。

? StreamID 768 的STE 位于0x4000。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9027

    瀏覽量

    366495
  • STE
    STE
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9191

原文標(biāo)題:2-level Stream Table

文章出處:【微信號:芯片驗(yàn)證工程師,微信公眾號:芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Algorithms and Data Structures The Science of Computing

    Algorithms and Data Structures The Science of Computing - Douglas Baldwin
    發(fā)表于 03-28 16:29

    ARM系列SMMU總線資料合集

    、SMMU的高級功能上篇我們介紹了SMMU的基本結(jié)構(gòu)和用法,本篇講一下SMMU的高級功能。在ARM64體系結(jié)構(gòu)中,SMMU幾乎可以放在總線互
    發(fā)表于 04-11 15:58

    多個設(shè)備是否可以共用一個SMMU StreamID?

    。##### Q6. 一個設(shè)備有多個Stream ID會如何呢?如果一個device在device tree, ACPI table中指定了多個StreamID, 那么arm SMMU
    發(fā)表于 11-07 15:36

    SMMU學(xué)習(xí)這一篇就夠了

    前言最近朋友圈、微信群( ARM-Trustzone-TEE-AT)掀起一陣學(xué)習(xí)SMMU的熱潮,作為一名安全領(lǐng)域的渣渣 ,勢必要蹭一蹭這個“熱點(diǎn)”,也學(xué)習(xí)一下吧,反正早晚都要學(xué),因?yàn)樗桶踩年P(guān)系
    發(fā)表于 02-23 17:11

    ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版

    ARM系統(tǒng)MMU(SMMU)體系結(jié)構(gòu)為存儲器管理單元(MMU)實(shí)施提供了靈活的實(shí)施框架,具有多個實(shí)施定義的選項(xiàng)。 該體系結(jié)構(gòu)可用于系統(tǒng)級的MMU。 它基于轉(zhuǎn)換表中保存的地址映射和內(nèi)存屬性信息,支持從
    發(fā)表于 08-12 06:25

    ARM720T DATA

    ARM720T DATA
    發(fā)表于 10-25 14:07 ?5次下載
    <b class='flag-5'>ARM</b>720T <b class='flag-5'>DATA</b>

    arm smmu的原理

    1: arm smmu的原理 1.1: smmu 基本知識 如上圖所示,smmu 的作用和mmu 類似,mmu作用是替cpu翻譯頁表將進(jìn)程的虛擬地址轉(zhuǎn)換成cpu可以識別的物理地址。同理
    的頭像 發(fā)表于 10-09 10:43 ?4243次閱讀
    <b class='flag-5'>arm</b> <b class='flag-5'>smmu</b>的原理

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

    如上圖所示,smmu 的作用和mmu 類似,mmu作用是替cpu翻譯頁表將進(jìn)程的虛擬地址轉(zhuǎn)換成cpu可以識別的物理地址。同理,smmu的作用就是替設(shè)備將dma請求的地址,翻譯成設(shè)備真正能用的物理地址,但是當(dāng)smmu bypass
    的頭像 發(fā)表于 10-09 10:48 ?6063次閱讀
    <b class='flag-5'>arm</b> <b class='flag-5'>smmu</b>的原理與<b class='flag-5'>smmu</b>驅(qū)動iommu框架

    SMMU數(shù)據(jù)結(jié)構(gòu)格式

    就是SMMU Level 1 Stream Table Descriptor的數(shù)據(jù)格式,簡稱 **Level1 STD** 。
    的頭像 發(fā)表于 04-28 11:48 ?896次閱讀

    SMMU數(shù)據(jù)結(jié)構(gòu)格式Stream Table Entry...V和Config介紹

    更新一個valid STE時需要非常小心,因?yàn)榇藭rSMMU可能會訪問這個STE數(shù)據(jù),這其中存在著“競爭race”。
    的頭像 發(fā)表于 05-04 10:15 ?1243次閱讀
    <b class='flag-5'>SMMU</b>數(shù)據(jù)結(jié)構(gòu)格式<b class='flag-5'>之</b><b class='flag-5'>Stream</b> <b class='flag-5'>Table</b> Entry...V和Config介紹

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

    上圖就是SMMU Level 1 Stream Table Descriptor的數(shù)據(jù)格式,簡稱Level1 STD。
    的頭像 發(fā)表于 05-06 14:44 ?941次閱讀
    <b class='flag-5'>SMMU</b>數(shù)據(jù)結(jié)構(gòu)格式<b class='flag-5'>之</b>Level 1 <b class='flag-5'>Stream</b> <b class='flag-5'>Table</b> Descriptor介紹

    ARM SMMU具有三種接口供軟件使用

    Memory-based data structures 用于將devices映射到用于地址轉(zhuǎn)換的 translation tables。
    發(fā)表于 05-08 09:18 ?525次閱讀

    ARM SMMU Data structures概述

    ARM SMMU 是一種用于系統(tǒng)級內(nèi)存管理單元(MMU)的架構(gòu),它支持基于translation表中的地址映射和內(nèi)存屬性信息的地址轉(zhuǎn)換。
    的頭像 發(fā)表于 05-08 12:46 ?961次閱讀
    <b class='flag-5'>ARM</b> <b class='flag-5'>SMMU</b> <b class='flag-5'>Data</b> <b class='flag-5'>structures</b>概述

    ARM SMMU Data structureContext Descriptors

    是否進(jìn)行stage 1 translation,獲取stage 1 translation tables的配置。
    的頭像 發(fā)表于 05-11 09:10 ?916次閱讀
    <b class='flag-5'>ARM</b> <b class='flag-5'>SMMU</b> <b class='flag-5'>Data</b> structure<b class='flag-5'>之</b>Context Descriptors

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

    如果SMMU全局禁用(例如,剛結(jié)束復(fù)位SMMU_CR0.SMMUEN == 0),則transaction將通過SMMU而不進(jìn)行任何地址轉(zhuǎn)換。
    的頭像 發(fā)表于 05-15 10:07 ?893次閱讀
    <b class='flag-5'>SMMU</b> VA-&gt;PA的轉(zhuǎn)換流程介紹