0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM SMMU Data structures之Stream Table

芯片验证工程师 来源:芯片验证工程师 2023-05-11 09:22 次阅读

incoming transaction的StreamID可以找到一个STE。SMMU支持两种Stream table格式,格式由Stream table base registers设置。

传入的StreamID会根据指定的table size进行范围检查,StreamID超出范围,则transaction就会被terminated,并且记录事件C_BAD_STREAMID。

当支持两个Security states时,如SMMU_S_IDR1.SECURE_IMPL == 1所示,使用SEC_SID标识transaction 是 Secure or Non-secure,后续使用各自独立的软件接口和数据结构。

Linear Stream Table

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

Linear Stream Table

linear Stream table是 STE 的连续数组,由 StreamID 从 0 开始索引。该大小可配置为2^n ,最多为 SMMU 在硬件中支持的最大 StreamID 位数。

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 线性数组)的指针。整个结构涵盖的 StreamID 范围可配置为 SMMU 支持的最大数量,但second-level tables不必完全填充,并且大小可能会有所不同。这节省了内存并避免了对非常大的 StreamID 空间进行大量连续分配物理空间的要求。top-level descriptors包含指向second-level table的指针以及该second-level table表示的 StreamID 范围。每个second-level table的指针(descriptor )也可以标记为invalid。

top-level table由 StreamID[n:x] 索引,其中 n 是覆盖的最高 StreamID 位,x 是由 SMMU_(S_)STRTAB_BASE_CFG.SPLIT 给出的可配置分割点。second-level tables 的索引最多为 StreamID[x - 1:0],具体取决于每个表的跨度(span)。

SMMU_IDR0.ST_LEVEL 字段可以指示是否支持2-level Stream table。在支持2-level Stream Tables的情况下,可以使用 6、8 和 10 位的分割点。SMMU实现可以支持linear Stream Table,或者同时支持 linear和2-level Stream Table。

支持超过 64 个 StreamID(6 位 StreamID)的 SMMU 必须支持2-level Stream tables。

支持少于64个StreamID的SMMU实现也可能支持 2-level Stream Tables,但这样做通常没有用,因为所有streams 可以填充到一个second-level table。意味着当linear Stream table的最大大小而无法容纳进一个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)被表示,但不是所有level 2 tables都有效。

• StreamIDs 0-255 由位于 0x1000 的 STE 数组。

• StreamIDs 256-259 由位于 0x2F20 的 STE 数组。

• StreamIDs 512-767 都是无效的。

• StreamID 768 的STE 位于0x4000。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9094

    浏览量

    367540
  • STE
    STE
    +关注

    关注

    0

    文章

    8

    浏览量

    9235

原文标题:2-level Stream Table

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Algorithms and Data Structures The Science of Computing

    Algorithms and Data Structures The Science of Computing - Douglas Baldwin
    发表于 03-28 16:29

    ARM系列SMMU总线资料合集

    SMMU的高级功能上篇我们介绍了SMMU的基本结构和用法,本篇讲一下SMMU的高级功能。在ARM64体系结构中,SMMU几乎可以放在总线互
    发表于 04-11 15:58

    多个设备是否可以共用一个SMMU StreamID?

    。##### Q6. 一个设备有多个Stream ID会如何呢?如果一个device在device tree, ACPI table中指定了多个StreamID, 那么arm SMMU
    发表于 11-07 15:36

    SMMU学习这一篇就够了

    前言最近朋友圈、微信群( ARM-Trustzone-TEE-AT)掀起一阵学习SMMU的热潮,作为一名安全领域的渣渣 ,势必要蹭一蹭这个“热点”,也学习一下吧,反正早晚都要学,因为它和安全的关系
    发表于 02-23 17:11

    ARM系统内存管理单元架构规范SMMU架构2.0版

    ARM系统MMU(SMMU)体系结构为存储器管理单元(MMU)实施提供了灵活的实施框架,具有多个实施定义的选项。 该体系结构可用于系统级的MMU。 它基于转换表中保存的地址映射和内存属性信息,支持从
    发表于 08-12 06:25

    ARM720T DATA

    ARM720T DATA
    发表于 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翻译页表将进程的虚拟地址转换成cpu可以识别的物理地址。同理
    的头像 发表于 10-09 10:43 4407次阅读
    <b class='flag-5'>arm</b> <b class='flag-5'>smmu</b>的原理

    arm smmu的原理与smmu驱动iommu框架

    如上图所示,smmu 的作用和mmu 类似,mmu作用是替cpu翻译页表将进程的虚拟地址转换成cpu可以识别的物理地址。同理,smmu的作用就是替设备将dma请求的地址,翻译成设备真正能用的物理地址,但是当smmu bypass
    的头像 发表于 10-09 10:48 6227次阅读
    <b class='flag-5'>arm</b> <b class='flag-5'>smmu</b>的原理与<b class='flag-5'>smmu</b>驱动iommu框架

    SMMU数据结构格式

    就是SMMU Level 1 Stream Table Descriptor的数据格式,简称 **Level1 STD** 。
    的头像 发表于 04-28 11:48 951次阅读

    SMMU数据结构格式Stream Table Entry...V和Config介绍

    更新一个valid STE时需要非常小心,因为此时SMMU可能会访问这个STE数据,这其中存在着“竞争race”。
    的头像 发表于 05-04 10:15 1331次阅读
    <b class='flag-5'>SMMU</b>数据结构格式<b class='flag-5'>之</b><b class='flag-5'>Stream</b> <b class='flag-5'>Table</b> Entry...V和Config介绍

    SMMU数据结构格式Level 1 Stream Table Descriptor介绍

    上图就是SMMU Level 1 Stream Table Descriptor的数据格式,简称Level1 STD。
    的头像 发表于 05-06 14:44 1038次阅读
    <b class='flag-5'>SMMU</b>数据结构格式<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映射到用于地址转换的 translation tables。
    发表于 05-08 09:18 581次阅读

    ARM SMMU Data structures概述

    ARM SMMU 是一种用于系统级内存管理单元(MMU)的架构,它支持基于translation表中的地址映射和内存属性信息的地址转换。
    的头像 发表于 05-08 12:46 1004次阅读
    <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

    是否进行stage 1 translation,获取stage 1 translation tables的配置。
    的头像 发表于 05-11 09:10 956次阅读
    <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的转换流程介绍

    如果SMMU全局禁用(例如,刚结束复位SMMU_CR0.SMMUEN == 0),则transaction将通过SMMU而不进行任何地址转换。
    的头像 发表于 05-15 10:07 963次阅读
    <b class='flag-5'>SMMU</b> VA-&gt;PA的转换流程介绍