SMMU软件指南SMMU编程之全局错误和最小配置
安全之安全(security²)博客目录导读
目录
一、全局错误
二、最小配置
一、全局错误
与编程接口相关的全局错误会报告到适当的 SMMU_(*_)GERROR 寄存器,而不是通过基于内存的事件队列。这些错误通常是严重的,例如导致 SMMU 停止向前推进。例如,访问某个配置数据结构时发生的外部中止。以下是所有全局错误的列表:
• 命令队列错误
• 事件队列访问中止(abort),当标记为中止时,事件队列中的传输停止
• PRI 队列访问中止(abort),当标记为中止时,PRI 队列中的传输停止
• CMD_SYNC 消息信号中断(MSI)写入中止(abort)
• 事件队列 MSI 写入中止(abort)
• PRI 队列 MSI 写入中止(abort)(仅限非安全 GERROR)
• GERROR MSI 写入中止(abort)
• SMMU 进入服务失败模式
SMMU_(*_)GERROR 为每个全局错误提供一个位标志。当触发错误条件时,通过切换 GERROR 中相应的标志来激活错误。在某些情况下,当错误处于激活状态时,SMMU 的行为会发生变化。例如,当命令队列错误激活时,命令队列中的命令不会被消费。
当 SMMU_(*_)IRQ_CTRL.GERROR_IRQEN == 1 时,当 SMMU 激活一个不是 GERROR MSI 写入中止的错误时,会触发 GERROR 中断。
二、最小配置
以下序列展示了 SMMU 初始化的最小配置:
-
分配流表(Stream Table)
• 为流表分配内存。
• 通过写入 SMMU_STRTAB_BASE_CFG 配置流表的格式和大小。
• 通过写入 SMMU_STRTAB_BASE 配置流表的基地址。
• 通过将每个 STE 的 STE.V 设置为 0,防止未初始化的内存被解释为有效配置,从而将其标记为无效。
• 通过执行 DSB 操作,确保写入的数据对 SMMU 可见。
◦ 如果 SMMU_IDR0.COHACC = 0,表示系统不支持 SMMU 的内存一致性访问。在这种情况下,可能需要额外的步骤,包括数据缓存维护,以确保 SMMU 能观察到写入的数据。 -
分配命令队列和事件队列
• 为命令队列和事件队列分配内存。
• 通过配置 SMMU_CMDQ_BASE、SMMU_CMDQ_PROD、SMMU_CMDQ_CONS、SMMU_EVENTQ_BASE、SMMU_EVENTQ_PROD 和 SMMU_EVENTQ_CONS 来指定基地址、大小、生产者指针和消费者指针。 -
设置访问流表、命令队列和事件队列的内存属性
• 配置 SMMU_CR1。 -
启用事件队列的 IRQ和 GERROR
• 配置 SMMU_IRQ_CTRL。 -
启用命令队列和事件队列
• 通过将 SMMU_CR0.CMDQEN 位设置为 1 来启用命令队列。
• 通过轮询 SMMU_CR0ACK,直到 CMDQEN 读取为 1,检查启用操作是否完成。
• 通过将 SMMU_CR0.EVENTQEN 位设置为 1 来启用事件队列。
• 通过轮询 SMMU_CR0ACK,直到 EVENTQEN 读取为 1,检查启用操作是否完成。 -
使 TLB 和配置缓存结构无效
• 向命令队列发出命令
◦ 要使 TLB 条目无效,确保软件为翻译上下文发出适当的命令。例如,要使非安全 EL1 上下文的 TLB 条目无效,发出 CMD_TLBI_NSNH_ALL 命令;对于 EL2 上下文,发出 CMD_TLBI_EL2_ALL 命令。
◦ 要使 SMMU 配置缓存无效,发出 CMD_CFGI_ALL 命令。
◦ 要强制所有先前的命令完成,发出 CMD_SYNC 命令。
• 另外,安全软件可以通过一次写操作使所有 TLB 和缓存无效。
◦ 将 SMMU_S_INIT.INV_ALL 设置为 1。
◦ 轮询 SMMU_S_INIT.INV_ALL,直到其设置为 0,再继续进行 SMMU 配置。 -
启用翻译
• 将 SMMU_CR0.SMMUEN 位设置为 1。
• 通过轮询 SMMU_CR0ACK,直到 SMMUEN 读取为 1,检查启用操作是否完成。
【注意】此序列展示了当 SMMU 不实现 RME 扩展,或 GPC 未启用时的非安全 SMMU 编程。安全或领域 SMMU 编程类似。如果 SMMU 实现了 RME 扩展,并且启用了 GPC,根世界运行的软件需要首先初始化 GPT。
相关文章:
SMMU软件指南SMMU编程之全局错误和最小配置
安全之安全(security)博客目录导读 目录 一、全局错误 二、最小配置 一、全局错误 与编程接口相关的全局错误会报告到适当的 SMMU_(*_)GERROR 寄存器,而不是通过基于内存的事件队列。这些错误通常是严重的,例如导致 SMMU 停止向前推进。例如…...
CPU条件下Pytorch、jupyter环境配置
一、创建虚拟环境 查看虚拟环境 conda env list 创建python虚拟环境 conda create -n minist python3.11 激活虚拟环境 conda activate minist 查看虚拟环境下有哪些包 pip list 二、安装pytorch 切换清华源 conda config --add channels https://mirrors.tuna.tsing…...
【自用】通信内网部署rzgxxt项目_01,后端pipeDemo部署(使用nssm.exe仿照nohup)
做完这些工作之后,不要忘记打开 Windows Server 的防火墙端口,8181、8081、8080、22、443、1521 做完这些工作之后,不要忘记打开 Windows Server 的防火墙端口,8181、8081、8080、22、443、1521 做完这些工作之后,不要…...
Ubuntu 安装实时内核指南
在运行需要高精度和低延迟响应的机器人驱动程序时,安装一个具备实时内核(Real-Time Kernel)的 Ubuntu 系统是至关重要的。若缺乏实时系统的支持,高频率的控制指令可能会导致机器人运动轨迹不流畅,甚至产生抖动现象。以…...
MySQL 主从复制与高可用
在现代分布式系统中,数据库的高可用性和可靠性至关重要。MySQL 提供了主从复制(Master-Slave Replication)机制来实现数据的冗余和容错,保证在主数据库发生故障时能够继续提供服务。而在此基础上,通过进一步的高可用架…...
RCE总结
文章目录 常见漏洞执行函数:1.系统命令执行函数2.代码执行函数 命令拼接符读取文件命令绕过:空格过滤绕过关键字绕过长度过滤绕过无参数命令执行绕过无字母数字绕过利用%0A截断利用回溯绕过利用create_function()代码注入无回显RCE1.反弹shell2.dnslog外…...
基于UNITY3D的照片墙演示项目技术分享
unity实现超大图片墙演示,由于拥有海量图片,使用了CPU 多线程,unity dots技术,图片组成文字部分,使用了点阵图技术,提取文字像素。 (关于点阵介绍) 点阵字体是把每一个字符都分成1616或2424个点…...
随手记:小程序兼容后台的wangEditor富文本配置链接
场景: 在后台配置wangEditor富文本,可以文字配置链接,图片配置链接,产生的json格式为: 例子: <h1><a href"https://uniapp.dcloud.net.cn/" target"_blank"><span sty…...
maven项目运行时NoSuchMethodError问题排查记录(依赖冲突解决)
控制台异常如下: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.io.input.BoundedInputStream.builder()Lorg/apache/commons/io/input/BoundedInputStream$Builder;问题明显,根据NoSuchMethodError…...
ECharts关系图-关系图11,附视频讲解与代码下载
引言: 关系图(或称网络图、关系网络图)在数据可视化中扮演着至关重要的角色。它们通过节点(代表实体,如人、物体、概念等)和边(代表实体之间的关系或连接)的形式,直观地…...
【C语言】动态内存管理:详解malloc和free函数
前言 在C语言编程中,动态内存分配是一个非常重要的概念。与静态内存分配不同,动态内存分配允许程序在运行时根据需要分配和释放内存,从而更加灵活地管理内存资源。特别是在一些数据结构的引用中经常需要使用,下面我们就详细讲解一…...
EGO Swarm翻译
目录 摘要 Ⅰ 介绍 Ⅱ 相关工作 A . 单四旋翼局部规划 B . 拓扑规划 C. 分布式无人机集群 Ⅲ 基于梯度的局部规划隐式拓扑轨迹生成 A.无需ESDF梯度的局部路径规划 B.隐式拓扑轨迹生成 Ⅳ 无人机集群导航 A 机间避碰 B. 定位漂移补偿 C. 从深度图像中去除agent Ⅴ …...
Linux根目录
在Linux系统中,文件系统遵循一种标准化的目录结构,即文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)。 根目录(/) /bin:包含二进制可执行文件,通常是用户和系…...
SAP-SD-参照退货订单补货时带不出行项目
业务场景: 当物料出现质量问题时,客户需要换货,不需要退款,就需要先做退货订单,然后参照退货订单进行补货,创建补货订单,但是创建补货订单时只是把抬头数据带入补货订单,没有带入行项…...
12-C语言单向链表
一、链表的概述 1.链表与数组对比 遍历数组中的数据,查询数据比较方便,但往数组中插入、删除数据需要移动大量数据;相反。链表遍历、查询数据不方便,但是插入、删除数据比较方便,不需要移动大量数据,直接…...
2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题
2024年11月 蓝桥杯青少组 STEMA考试 Scratch真题(选择题) 题目总数:5 总分数:50 选择题 第 1 题 单选题 Scratch运行以下程宇后,小兔子会( )。 A. 变小 B. 变大 C. 变色 D. …...
FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.2,RTP协议-RTP协议概述,协议详情
前提: 为什么要学习 RTP(Real-time Transport Protocol)重点 简介:RTP是一个实时传输媒体数据的协议,通常与RTSP一起使用。它负责在网络上传输音视频数据。特点:RTP通过UDP或TCP传输媒体数据,提供时间戳和序…...
Linux系统编程——系统内核中的信号
目录 一、前言 二、系统内核中的信号 三、sigset_t 四、信号集操作 1、sigpending(); 2、sigemptyset(); 3、sigfillset(sigset_t *set); 4、int sigaddset ()和sigdelset() 编辑 5、sigismember() 6、sigprocmask() 五、信号集操作代码演示 六、深入理解进程的信…...
delve调试环境搭建—golang
原文地址:delve调试环境搭建—golang – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 由于平时不用 IDE 开发环境,习惯在 linux终端vim 环境下开发,所以找了golang的调试工具,delve类似gdb的调试界…...
shell脚本的循环-----while和for循环
一、while 1.格式 while 条件表达式; do 命令 done 2.案例 : ping测试子网段的主机网段由用户输入,例如用户输入192.168.101 ,则ping192.168.101.125 — 192.101.131 UP: /tmp/host_up.txt Down: /tmp/host_down.txt &#…...
教育资源解析工具:打通国家中小学智慧教育平台电子课本获取通道
教育资源解析工具:打通国家中小学智慧教育平台电子课本获取通道 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …...
2026年了,为什么很多企业做了智慧气象,结果还是没把风险降下来?
上个月,和一位新能源集团的运营负责人聊天,他抛出一个百思不得其解的问题:“我们花了300多万上了智慧气象系统,接了精细化预报,预警信息每天推送到手机、电脑、大屏,三个渠道同步。结果上个月一场雷暴&…...
番茄小说离线阅读解决方案:打造你的个人数字图书馆
番茄小说离线阅读解决方案:打造你的个人数字图书馆 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 在数字阅读时代,你是否曾遇到过这样的困扰:网络信号不…...
阿里云省钱攻略:优惠券领取与使用一看就会
阿里云是阿里巴巴集团旗下云计算品牌,凭借其强大的计算能力和丰富的云服务产品,成为众多企业和个人开发者的首选。然而,如何在享受云服务的同时有效控制成本,成为大家关注的焦点。本文将详细介绍阿里云优惠券的领取与使用技巧&…...
保姆级教程:用ColabFold在线版AlphaFold2,5分钟搞定你的第一个蛋白质结构预测
零门槛玩转蛋白质结构预测:ColabFold极简指南 蛋白质结构预测曾是生物信息学领域的"圣杯",直到AlphaFold2的出现彻底改变了游戏规则。但传统方法需要复杂的本地环境配置和命令行操作,让许多感兴趣的非专业人士望而却步。现在&…...
开源项目常见安装故障的系统性排查与解决
开源项目常见安装故障的系统性排查与解决 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Fur…...
企业级母婴商城系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
摘要 随着互联网技术的快速发展和电子商务的普及,母婴用品市场呈现出蓬勃发展的态势。年轻父母对于母婴产品的需求日益多样化,传统的线下零售模式已无法满足其便捷、高效、个性化的购物需求。因此,构建一个功能完善、安全可靠的企业级母婴商城…...
MongoDB(70)如何使用副本集进行备份?
使用副本集进行备份是一个常见的MongoDB备份策略,因为副本集提供了数据冗余和高可用性。通过从副本集中读取数据,可以在不影响主节点的情况下进行备份。以下是详细的步骤和示例代码,展示如何使用 MongoDB 副本集进行备份。方法一:…...
PySide6新手必看:从零开始用Python玩转Qt界面开发(附官方教程对比)
PySide6新手必看:从零开始用Python玩转Qt界面开发 在Python生态中,GUI开发一直是个让人又爱又恨的话题。当Tkinter显得过于简陋,而PyQt又面临商业授权困扰时,PySide6作为Qt官方推出的Python绑定,正成为越来越多开发者的…...
Wan2.2-T2V-A5B实战:GitHub版本管理下的团队协作开发流程
Wan2.2-T2V-A5B实战:GitHub版本管理下的团队协作开发流程 你是不是也遇到过这样的场景?团队几个人一起开发一个基于Wan2.2-T2V-A5B的应用项目,代码改来改去,最后谁改了哪部分、为什么改、线上版本和本地版本哪个更新,…...
