修志龙_ZenonXiu · 2023年05月08日 · 上海市浦东新区

软件使用SMMUv3的stage1还是stage2地址转换

分享一篇我写的知识文章: https://developer.arm.com/doc...

问题

SMMUv3硬件可以设计为:

  • 只有stage1地址转换支持
  • 只用stage2地址转换支持
  • 既支持stage1又支持stage2

那软件怎么使用stage1和stage2的呢?

回答

这取决于软件的使用场景。

Linux Kernel

  • 如果SMMUv3硬件只支持stage1或只支持stage2,那么支持的stage可以用于Linux的DMA-IOMMU和VFIO的场景。在Shared Virtual Address (SVA)场景下,必须使用stage1。因而,只支持stage2的SMMUv3 hardware无法使用在SVA场景。
  • 如果SMMUv3硬件既支持stage1又支持stage2,下表展示了不同场景下stage的使用情况:
Use caseIOMMU DomainWhich stage to be used
DMA-IOMMU mappingIOMMU_DOMAIN_IDENTITYStage 1 bypass and stage 2 bypass
DMA-IOMMU mappingIOMMU_DOMAIN_DMAStage 1
VFIO with VFIO_TYPE1_IOMMU or VFIO_TYPE1v2_IOMMUIOMMU_DOMAIN_UNMANAGEDStage 1
VFIO with VFIO_TYPE1_NESTING_IOMMUIOMMU_DOMAIN_UNMANAGEDStage 2
SVAIOMMU_DOMAIN_DMAStage 1
DMA IOMMU mapping

image.png

VFIO

image.png

SVA

image.png

Xen

当在Xen上使用SMMUv3实现设备pass through时,仅限于使用stage2.请参见:https://github.com/xen-projec...

推荐阅读
关注数
8627
内容数
50
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息