1. 在一颗树的根下每个PCI(e)设备被它的请求id(AKA RID)独一无二的标识,一个请求ID由三部分组成,总线号,设备号和功能号,如:
Bits [15:8] 是总线号
Bits [7:3]是设备号
Bits [2:0]是功能号
剩下的bit都填充0
2. IOMMU可以通过从请求ID附带的数据来区分PCI设备。然而一个给予的PCI设备只能控制一个IOMMU,一个根可以拆分多个master为一个IOMMU集合(如每条总线带一个IOMMU)
3. 通用的iommus属性用来描述这种联系是不够的,一种机制被要求映射从PCI设备到它的IOMMU和附带数据,通用的iommu属性可以从内核的Documentation/devicetree/bindings/iommu/iommu.txt获取
4. PCI根中可选的属性
- iommu-map: 映射一个请求ID到一个IOMMU和相关的具体IOMMU数据
这个属性是一个任意数目的元组(rid-base,iommu,iommu-base,length)
任何在这个左闭右开区间[rid-base,rid-base + length)中的值就是RID r,这是与列出来的IOMMU息息相关的,并且还带有IOMMU的区分符号(r - rid-base + iommu-base)
- iommu-map-mask