smmu梳理

smmu 用途

用途: (参考引用见 参考资料章节)

smmu梳理_第1张图片

访问非连续的地址
现在系统中很少再预留连续的memory,如果Master需要很多memory,可以通过SMMU把一些非连续的PA映射到连续的VA,例如给DMA,VPU,DPU使用。

32位转换成64位
现在很多系统是64位的,但是有些Master还是32位的,只能访问低4GB空间,如果访问更大的地址空间需要软硬件参与交换memory,实现起来比较复杂,也可以通过SMMU来解决,Master发出来的32位的地址,通过SMMU转换成64位,就很容易访问高地址空间。

限制Master的访问空间
Master理论上可以访问所有的地址空间,可以通过SMMU来对Master的访问进行过滤,只让Master访问受限的区域,那这个区域也可以通过CPU对SMMU建立页表时动态控制。

用户态驱动
现在我们也看到很多系统把设备驱动做在用户态,调用驱动时不需要在切换到内核态,但是存在一些安全隐患,就是用户态直接控制驱动,有可能访问到内核空间,这种情况下也可以用SMMU来实现限制设备的访问空间

设备虚拟化
例如设备虚拟化有多种方式,Emulate,Para-virtualized,以及Pass-through,用SMMU可以实现Pass though,这样无论是性能,还是软件的改动都是比较小的。

一些不支持TrustZone的Master,可以利用SMMU支持Trustzone

smmu 参考资料

[architecture]-ARM SMMU学习概念总结一篇就够了 https://blog.csdn.net/weixin_42135087/article/details/121926234
ARM SMMU的原理与IOMMU https://blog.csdn.net/21cnbao/article/details/108915163

你可能感兴趣的:(linux,内核,linux)