如何解决ioremap、地址和与 TrustZone 的关系
有一些问题,我不确定我是否完全理解 TrustZone 地址。 据我所知,每个内核都带有描述给硬件的设备树配置。在 TrustZone 系统中,ns(非安全)内核带有 dt(设备树)包含“DMA 堆”的配置。 DMA 堆用于内核作为“共享缓冲区”与 TrustZone 内核通信,这取决于 SMC 处理程序的实现。一般来说,不得不说 TrustZone 内核运行在“安全内存”(安全世界)上,而在另一个“世界”的 ns 内核上运行 ns 内存(非安全世界)。这是通过物理总线事务上的特殊 NS 位实现在体系结构上强制执行的。
-
dt 文件中定义的大多数堆指向节点类型“内存范围”。更改内存范围节点地址是否会导致映射到安全地址?
-
我不确定,但是否有可能运行 kmalloc 导致映射到 TrustZone 安全内存?
-
根据ioremap功能:
ioremap() 函数用于将一个 I/O 设备的物理地址映射到内核虚拟地址。内核创建一个页表,即虚拟地址到请求的物理地址的映射。当我们做 ioremap() 这个映射时被摧毁了。
是否可以将安全内存映射到 ns 内核?
- 据我所知,SMMU 负责 VA -> IPA -> PA 或 VA -> PA(在转换表上)之间的映射,这由页表的两个阶段完成。第 1 阶段由 ns 内核完成,第 2 阶段由 Hypervisor 完成。 映射到安全地址的过程如何工作? 在运行 ioremap() 之后,谁告诉管理程序在页表阶段 2 上进行映射?
谢谢,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。