如果禁用了IOMMU(英特尔VT-D),PCI设备可以直接寻址CPU PA吗

时间:2019-02-21 07:57:59

标签: linux linux-kernel pci

我的理解是,如果PCI设备要执行DMA RW,并且启用了IOMMU,则驱动程序应通过pci_map_page(用于非一致性)将CPU PA映射到DMA地址,然后PCI设备可以使用该DMA地址,并且IOMMU会将DMA地址转换为CPU PA。

我的问题是:

  1. 驱动程序是否可以为给定设备禁用IOMMU?
  2. 如果有人通过BIOS禁用了IOMMU,这是否意味着任何CPU PA都可以直接是DMA RW?

1 个答案:

答案 0 :(得分:1)

  1. VT-d硬件允许为每个设备分别设置直通,但是Linux当前不提供驱动程序API来执行此操作。
  2. 是的,当在BIOS中或通过在Linux命令行中使用intel_iommu = off禁用IOMMU时,PCI / PCIe设备的DMA使用系统物理地址。