dts是如何来描述iommu与PCI(e)之间的关系?

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

 

posted @ 2019-06-04 19:47  Jello  阅读(1640)  评论(0编辑  收藏  举报