当前位置: 首页 > article >正文

SMMU软件指南SMMU编程之命令队列

安全之安全(security²)博客目录导读


SMMU通过内存中的循环命令队列进行控制。例如,当软件更改STE或翻译时,需要在SMMU中失效相关缓存。这可以通过向命令队列发出相应的失效命令来实现。有关命令类型的详细信息,请参见“命令”部分。

在SMMUv3.3之前,每个安全状态只有一个命令队列。支持SMMUv3.3的SMMU可以选择支持多个命令队列,以减少多个处理器元素(PE)同时向SMMU提交命令时的争用。

SMMU_CMDQ_BASE存储了命令队列的基址和大小。软件在添加新命令之前需要检查命令队列是否有空间。当软件向队列添加一个或多个命令时,会更新SMMU_CMDQ_PROD指针以通知SMMU有新命令可用。随着SMMU处理命令,它会更新SMMU_CMDQ_CONS指针。软件通过读取SMMU_CMDQ_CONS指针确定命令已被消费并释放了空间。

如果SMMU_CMDQ_PROD.WR == SMMU_CMDQ_CONS.RD 且 SMMU_CMDQ_PROD.WR_WRAP != SMMU_CMDQ_CONS.RD_WRAP,则队列已满。

仅更新SMMU_CMDQ_CONS表示命令已被消费,但这可能不意味着命令的效果已可见。CMD_SYNC命令可用于同步。只有当之前命令的效果可见时,它才会被消费。例如:

CMD_TLBI_EL3_ALL
CMD_SYNC

当CMD_SYNC被消费时,可以确保CMD_TLBI_EL3_ALL的效果可见。

一、命令

命令队列中的所有条目均为16字节长,所有命令队列条目均为小端格式。每个命令以一个8位的命令操作码开始。以下列表展示了命令的类别:

  • 预取命令(Prefetch commands:预取翻译或配置。
  • TLB失效命令(TLB invalidation commands:在给定的异常级别中使匹配标签(VMID、ASID、VA或全部)的所有TLB条目失效。
  • 配置缓存失效命令(Configuration cache invalidation commands:使指定范围内的所有配置缓存条目失效(对于STE,范围为StreamID;对于CD,范围为StreamID和SubstreamID)。
  • 同步命令(Synchronization command:为与同步命令在同一命令队列中发布的前置命令提供同步机制。
  • PRI响应命令(PRI response command:当SSV == 1时,通知与StreamID和SubstreamID对应的设备,指示由PRGIndex标识的页请求组已完成,并提供相应的响应。
  • ATC失效命令(ATC invalidation command:使匹配标签(StreamID、SubstreamID、地址范围)的所有ATC条目失效。
  • 挂起恢复/终止命令(Stall resume/termination command:恢复或终止由给定StreamID和STAG参数标识的挂起事务的处理。
  • DPT失效命令(DPT invalidation commands:这些命令从DPT TLB中移除缓存的DPT信息。

有关命令的完整说明,请参阅《Arm System Memory Management Unit version 3》。


http://www.kler.cn/a/448156.html

相关文章:

  • 【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
  • 如何实现单例模式?
  • 车载网关性能 --- 缓存buffer划分要求
  • 【数据安全】如何保证其安全
  • 使用 Docker 打包和运行 Vue 应用
  • 0基础学前端-----CSS DAY9
  • 数字逻辑(五)——用二进制来表示音频和视频
  • 微服务详细教程之nacos和sentinel实战
  • 机器学习(三)-多项式线性回归
  • 深入了解Java在人工智能领域的最新应用
  • 关系型数据库的完整性和一致性
  • C++初阶—类与对象(下篇)
  • 基于Socket实现客户端和服务端的Tcp通信(C#)
  • 18个AI变现案例分享,每一个都可以作为副业赚睡后收入!
  • Vue.js前端框架教程9:Vue插槽slot用法
  • Java基础复习(二):面向对象编程
  • Apache POI练习代码
  • cocos creator制作2dTop-down游戏(虚拟摇杆、地图加载)
  • UI自动化-八大元素定位方法
  • 如何利用Python爬虫获得1688商品详情
  • 基于单片机的程控电源显示控制电路设计
  • 抓包之使用wireshark抓http2的包
  • R语言读取hallmarks的gmt文档的不同姿势整理
  • 【大语言模型】ACL2024论文-33 Johnny 如何说服大型语言模型越狱:通过人性化 LLMs 重新思考挑战 AI 安全性的说服技巧
  • 在 C# 中播放系统声音:蜂鸣声、星号声、问号声等
  • sql注入之union注入