默认使用场景-支持SVA的场景
默认情况下,本文假设用户的运行环境是支持SVA(Shared Virtual Addressing)的,硬件可以直接访问用户态程序的VA,而不需要用户把VA转换成硬件可见的DMA地址传递给硬件。可以通过以下三个条件判定运行环境是否支持SVA:
- 用户运行环境中linux kernel已经支持SVA。在用户环境中的shell中,通过观察执行zcat /proc/config.gz | grep -i CONFIG_IOMMU_SVA | echo $?命令的结果判断kernel是否支持SVA,如果是0则支持SVA,其它情况下则不支持。
- 判断是否使能IOMMU,可以在用户环境中的shell中,通过观察执行dmesg | grep -i iommu | echo $?命令的结果是否为0来判断是否支持IOMMU。
- 用户环境中所有注册到UACCE框架的设备都是支持PASID(Process Address Space ID)和支持IOMMU的。在用户环境中的shell中,通过执行cat /sys/class/uacce/设备名/attrs/flags命令的结果,如果结果和3进行与运算之后的结果等于2则该设备支持PASID且支持IOMMU。
父主题: 介绍