ioremap、地址和与 TrustZone 的关系

问题描述

有一些问题,我不确定我是否完全理解 TrustZone 地址。 据我所知,每个内核都带有描述给硬件的设备树配置。在 TrustZone 系统中,ns(非安全)内核带有 dt(设备树)包含“DMA 堆”的配置。 DMA 堆用于内核作为“共享缓冲区”与 TrustZone 内核通信,这取决于 SMC 处理程序的实现。一般来说,不得不说 TrustZone 内核运行在“安全内存”(安全世界)上,而在另一个“世界”的 ns 内核上运行 ns 内存(非安全世界)。这是通过物理总线事务上的特殊 NS 位实现在体系结构上强制执行的。

  1. dt 文件中定义的大多数堆指向节点类型“内存范围”。更改内存范围节点地址是否会导致映射到安全地址?

  2. 我不确定,但是否有可能运行 kmalloc 导致映射到 TrustZone 安全内存?

  3. 根据ioremap功能

ioremap() 函数用于将一个 I/O 设备的物理地址映射到内核虚拟地址。内核创建一个页表,即虚拟地址到请求的物理地址的映射。当我们做 ioremap() 这个映射时被摧毁了。

是否可以将安全内存映射到 ns 内核?

  1. 据我所知,SMMU 负责 VA -> IPA -> PA 或 VA -> PA(在转换表上)之间的映射,这由页表的两个阶段完成。第 1 阶段由 ns 内核完成,第 2 阶段由 Hypervisor 完成。 映射到安全地址的过程如何工作? 在运行 ioremap() 之后,谁告诉管理程序在页表阶段 2 上进行映射?

谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)