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 初始化的最小配置

  1. 分配流表(Stream Table)
    • 为流表分配内存。
    • 通过写入 SMMU_STRTAB_BASE_CFG 配置流表的格式和大小。
    • 通过写入 SMMU_STRTAB_BASE 配置流表的基地址。
    • 通过将每个 STE 的 STE.V 设置为 0,防止未初始化的内存被解释为有效配置,从而将其标记为无效。
    • 通过执行 DSB 操作,确保写入的数据对 SMMU 可见。
    ◦ 如果 SMMU_IDR0.COHACC = 0,表示系统不支持 SMMU 的内存一致性访问。在这种情况下,可能需要额外的步骤,包括数据缓存维护,以确保 SMMU 能观察到写入的数据。

  2. 分配命令队列和事件队列
    • 为命令队列和事件队列分配内存。
    • 通过配置 SMMU_CMDQ_BASE、SMMU_CMDQ_PROD、SMMU_CMDQ_CONS、SMMU_EVENTQ_BASE、SMMU_EVENTQ_PROD 和 SMMU_EVENTQ_CONS 来指定基地址、大小、生产者指针和消费者指针。

  3. 设置访问流表、命令队列和事件队列的内存属性
    • 配置 SMMU_CR1。

  4. 启用事件队列的 IRQ和 GERROR
    • 配置 SMMU_IRQ_CTRL。

  5. 启用命令队列和事件队列
    • 通过将 SMMU_CR0.CMDQEN 位设置为 1 来启用命令队列。
    • 通过轮询 SMMU_CR0ACK,直到 CMDQEN 读取为 1,检查启用操作是否完成。
    • 通过将 SMMU_CR0.EVENTQEN 位设置为 1 来启用事件队列。
    • 通过轮询 SMMU_CR0ACK,直到 EVENTQEN 读取为 1,检查启用操作是否完成。

  6. 使 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 配置。

  7. 启用翻译
    • 将 SMMU_CR0.SMMUEN 位设置为 1。
    • 通过轮询 SMMU_CR0ACK,直到 SMMUEN 读取为 1,检查启用操作是否完成。

【注意】此序列展示了当 SMMU 不实现 RME 扩展,或 GPC 未启用时的非安全 SMMU 编程。安全或领域 SMMU 编程类似。如果 SMMU 实现了 RME 扩展,并且启用了 GPC,根世界运行的软件需要首先初始化 GPT。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ISP用到的一些名词简介

这里主要记录一下在学习ISP时遇到的一些名词。 图像质量(Picture Quality) 1.锐度(Acutance) 锐度常用于描述边界处图像信息过渡的快慢。高反差图像过渡速度非常快,可以形成非常明确的边缘,而低反差图像存在一定的过渡缓冲&#…

SqlSugar查询达梦数据库遇到的异常情况(续)

之前的文章提到在SqlSugar的Where函数中使用!string.IsNullOrEmpty函数查询达梦数据库时,明明数据库中有数据但就是查不出来,但相同的代码在另一台电脑上就可以正常返回数据。   以下图中的两张表数据为例,执行下面的SQL语句无法查询到数据…

深度学习试题及答案解析(二)

1. 神经风格转换中,优化算法的每次迭代更新的是什么? 神经风格转换(Neural Style Transfer, NST)是一种使用深度学习技术,特别是卷积神经网络(CNN),来将一幅图像的风格应用到另一幅图…

thinkphp 多选框

视图 <div class"form-group"><label for"c-flag" class"control-label col-xs-12 col-sm-2 col-md-4">{:__(Flag)}</label><div class"col-xs-12 col-sm-8 col-md-8"><!--formatter:off--><select …

Spark优化----Spark 性能调优

目录 常规性能调优 常规性能调优一&#xff1a;最优资源配置 常规性能调优二&#xff1a;RDD 优化 RDD 复用 RDD 持久化 RDD 尽可能早的 filter 操作 常规性能调优三&#xff1a;并行度调节 常规性能调优四&#xff1a;广播大变量 常规性能调优五&#xff1a;Kryo 序列化 常规性…

找数字-T3

小明看到了一个字符串&#xff0c;这个字符串只包含大小写字母和数字&#xff0c;他想把这个字符串里的数字全部找出来。比如“23y4y8Gg48gt001eDGER”&#xff0c;里面的数字就是23,4,8,48,1。注意001要变成1输出。并且保证所有数字不会太大&#xff08;小于1000000&#xff0…

cf补题日记3

原题1&#xff1a; This is the hard version of the problem. The only differences between the two versions are the constraints on mm and qq. In this version, m,q≤105m,q≤105. You can make hacks only if both versions of the problem are solved. Narek and Ts…

ECharts柱状图-柱图42,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

电商店铺数据集成到金蝶云星辰V2的实践经验分享

电商店铺数据集成到金蝶云星辰V2的技术案例分享 在电商业务快速发展的背景下&#xff0c;如何高效地将聚水潭平台上的电商店铺数据集成到金蝶云星辰V2系统中&#xff0c;成为了许多企业面临的重要挑战。本文将详细探讨一个实际运行的解决方案——“电商店铺->金蝶客户”&am…

(css)鼠标移入或点击改变背景图片

(css)鼠标移入或点击改变背景图片 html <div class"mapTip"><divv-for"(item, index) of legendList":key"index"class"mapTipOne":class"{ active: change index }"click"legendHandle(item, index)"…

Java中的锁机制 与 synchronized的理解

** Java中的锁机制** 1. 公平锁 vs 非公平锁 公平锁&#xff1a;公平锁的特点是多个线程按照请求锁的顺序来获取锁&#xff0c;即遵循 FIFO&#xff08;先进先出&#xff09;顺序。公平锁会避免“饥饿”现象&#xff0c;即后申请锁的线程不会比先申请的线程更早获取锁。Java中…

metasploit之ms17_010_psexec模块

‌MS17-010_psexec‌是metasploit工具的其中一个模块&#xff0c;‌MS17-010_psexec‌需要靶机的账号密码才能渗透&#xff08;ms17_010_eternalblue是不需要靶机账密的但是我总是提示超时&#xff09; 使用MS17-010_psexec‌要求&#xff1a; 防火墙必须允许SMB流量进出。(要…

前端配置跨域的详细指南

在现代Web开发中&#xff0c;跨域资源共享&#xff08;CORS, Cross-Origin Resource Sharing&#xff09;是一个非常重要的概念。浏览器出于安全考虑&#xff0c;默认情况下不允许跨域请求。如果你需要在前端与不同源的服务器进行通信&#xff0c;就必须配置跨域支持。本文将介…

对象克隆与单例模式

一、对象克隆 在 C 中&#xff0c;对象克隆通常可以借助拷贝构造函数和赋值运算符重载来实现&#xff0c;分为浅拷贝&#xff08;默认行为&#xff09;和深拷贝&#xff08;需要自定义实现&#xff09;。 1. 浅拷贝示例 #include <iostream> #include <string> …

Oracle virTualBox安装window10

一、下载windows10镜像 我下载的windows10镜像如下&#xff1a; 内部文件如下&#xff1a; 二、错误的安装方法 直接新建虚拟机&#xff0c;选择镜像文件&#xff1a; 启动虚拟机&#xff08;会一直提示没有启动设备&#xff0c;选择镜像后一直弹窗提示&#xff09; 三、正确…

四川托普信息技术职业学院教案1

四川托普信息技术职业学院教案 【计科系】 周次 第 1周&#xff0c;第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了&#xff0c;为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…

三维引擎cesium学习经验

三维引擎cesium学习经验&#xff1a; 1、初始化viewer对象 2、对entity的操作&#xff1a;添加&#xff0c;隐藏&#xff0c;修改&#xff0c;去除&#xff0c;居中显示 3、去除掉entity的双击事件 4、获取当前视角高度 5、获取经纬度在屏幕上的位置 6、获取三维场景屏幕中心点…

虚拟机VMware的安装问题ip错误,虚拟网卡

要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了&#xff0c;又重新安装&#xff0c;一般都会有问题 卸载重装vmware: 第一…

图片和媒体资源的优化:提升Web应用性能与用户体验的关键

文章目录 前言一、为什么需要优化图片和媒体资源二、图片优化策略三、媒体资源优化策略四、案例研究&#xff1a;实际效果展示结语 前言 在现代Web开发中&#xff0c;图片和媒体资源&#xff08;如音频、视频&#xff09;的质量和加载速度对用户体验有着直接影响。高质量的媒体…

裸机LED 灯实验

G1、硬件原理分析 2、寄存器说明 a、主要配置寄存器 使能 GPIO1 时钟—CCM_CCGR1 设置 GPIO1_IO03 的复用功能—IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 配置 GPIO1_IO03—IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 设置GPIO GPIO1_GDIR 的 bit3 要设置为 1,表示输出 控制GPIO输出电平,…