更多参考兄弟篇:pcie的rc ep ats atc acs at关系
本文以nic、gpu、rc之间关系记录以及相关问题的记录,相关专家指导的信息拾遗记录
at是tlp报文中的bit位,如果从ep发给gpu,发出去的报文标注了at可以指定是否pass though,这为了应对开启iommu,如果配置了ep上的ats,在发送出去的时候直接配置为pass though,从而不进行iommu的转换。
ats是在ep端的一个能力,是一个地址转换服务。 作用是告诉DMA硬件单元 发起dma请求的时候pcie的报文中根据这个ats服务是否打开来标注pcie报文是否配置at字段。 如果打开,并且第一次从rc查询到地址后就缓存在ep的atc中,c是cache。 后面进行发送的时候这个ats服务中如果命中,就直接用它,然后携带的地址就是实际的hpa地址,从而过pcie switch的时候直接转到gpu,不用经过rc进行翻译(开启iommu)。 这里所谓的地址转换是值从gva到hpa还是从iova到hpa的转换。
intel_iommu=on的作用,硬件上是打开iommu。 对pcie报文的影响是所有的报文都需要到rc(root complex)进行查询地址。ats是对iommu=on的一个补丁,如果开了iommu必须过rc,但是如果开启了ats,则后期在ep上会缓存va到hpa的关系到atc中。 后面报文发起dma的时候地址直接用转化出来的hpa。
iommu=pt和nopt的影响关系, 对于开启iommu=on的,是整个linux系统层面的开关。 开启pt是pass though(直通)可以提高性能。 表示告诉iommu我是否需要进行地址转换。 如果是pt表示不需要iommu转换。如果是nopt则需要进行一次转换。
如果开启pt和nopt在linux内核中,影响的是dma_map的动作:

最低0.47元/天 解锁文章
1592

被折叠的 条评论
为什么被折叠?



