PCIe访问控制服务(ACS)

news/2024/11/13 11:30:38/




❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️


✨ 1. 为何要用ACS ?

🌟1.1 P2P传输风险

  ATS(Address Translation Services)是一种基于信任的服务协议。如果EP端ATC(Address Translation Cache)声称其发出的访问请求是经过转换后的地址,且该地址刚好落在PCIe交换开关的BAR范围内,则该访问请求不会到达RC,而是被交换开关路由到该地址所对应的EP。也就是说,该访问请求绕过了IOMMU的隔离,进行了P2P(peer-to-peer)传输。

图1 Peer-to-peer PCIe Transaction

图1 Peer-to-peer PCIe Transaction

  PCIe协议允许P2P传输,这也就意味着同一个PCIe交换开关连接下不同EP可以在不流经RC的情况下互相通信。若使用过程中不希望P2P直接通信又不采取相关措施,则该漏洞很有可能被无意或有意触发,使得某些EP收到无效、非法甚至恶意的访问请求,从而引发一系列潜在问题。


🌟1.2 解决方案 - ACS

  ACS协议提供了一种机制,能够决定一个TLP被正常路由、阻塞或重定向。在SR-IOV系统中,还能防止属于VI或者不同SI的设备Function之间直接通信。通过在交换节点上开启ACS服务,可以禁止P2P发送,强迫交换节点将所有地址的访问请求送到RC,从而避开P2P访问中的风险。ACS可以应用于PCIe桥、交换节点以及带有VF的PF等所有具有调度功能的节点,充当一个看门人的角色。



❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

✨2. ACS服务介绍

🌟2.1 ACS支持的访问控制类型

⭐️2.1.1 ACS基本能力

  ACS支持以下类型的PCIe访问控制:

  • ACS来源验证;
  • ACS转换阻塞;
  • ACS P2P请求事务重定向;
  • ACS完成事务重定向;
  • ACS上行转发;
  • ACS P2P出口控制;
  • ACS定向转换P2P。

⭐️2.1.2 ACS增强能力

  为了提升ACS的隔离及保护能力,在常规ACS控制机制外提供了ACS增强能力,主要有如下四种:

  • ACS I/O请求阻塞;
  • ACS DSP存储器目标访问;
  • ACS USP存储器目标访问;
  • ACS未声明请求重定向。

🌟2.2 ACS访问控制能力的适用范围

  ACS服务是默认关闭的,想要使用ACS访问控制服务需要通过软件配置ACS控制寄存器来打开对应能力。在PCIe系统中可以选择关闭ACS,也可选择全部开启或部分开启ACS访问控制能力。不同PCIe组件对ACS访问控制功能的需求不同,不同的ACS访问控制功能也并非适用于所有的PCIe组件。至于要开启或关闭哪些特定的ACS访问控制能力,则取决于具体的Function类型及其在是否为多Function设备的组成部分。PCIe各组件对ACS访问控制功能的需求,或者说ACS各访问控制能力适用的PCIe组件范围,如下表所示:

表1 ACS访问控制能力的适用范围

-下行端
(单Funtion、多Function)
具备SR-IOV能力的Function
及多Function设备
(不含下行端口Function)
单Function设备
(不含具备SR-IOV能力的单Function及下行系端口Function)
ACS来源验证必选禁用不适用
ACS转换阻塞必选禁用不适用
ACS P2P请求事务重定向支持P2P事务的RP的必选
交换节点下行端口的必选
支持P2P传输的Function的必选 RCiEP的可选不适用
ACS完成事务重定向支持P2P请求重定向的RP的必选
交换节点下行端口的必选
支持P2P请求重定向的Function的必选不适用
ACS上行转发RC支持重定向请求验证的RP的必选禁用不适用
ACS P2P出口控制可选可选不适用
ACS定向转换P2P支持ATS&P2P事务的RP的必选
交换节点下行端口的必选
支持ATS&P2P事务的多Function设备Function的必选不适用
ACS I/O请求阻塞支持ACS扩展能力的RP及交换节点下行端口的必选不适用不适用
ACS DSP存储器目标访问支持ACS扩展能力且有MEM BAR的RP及交换节点下行端口的必选不适用不适用
ACS USP存储器目标访问支持ACS扩展能力且上行端口有MEM BAR的交换节点下行端口的必选RP不适用不适用不适用
ACS未声明请求重定向支持ACS扩展能力的交换节点下行端口的必选
RP 不适用
不适用不适用

表注: 考虑到开启了VF的单Function设备本质上表现与多Function设备无异,ACS也可以应用于具备SR-IOV能力的单Function设备。

📌 除以上表格提到的之外,在ACS实现过程中还应注意:📢📢

  • ACS绝不能用于PCIe-PCI桥之间以及RC事件收集器,这些地方也不能实现ACS扩展能力结构。
  • 除ACS源头验证外,ACS访问控制不适用于多播TLP。
  • RCiEP可以实现ACS但不是必须。单个RC下的RCiEP可以部分开启ACS。

🌟2.3 ACS与非ACS组件间的互操作性

📌 为了确保开启了ACS与未开启ACS的PCIe组件之间互操作性,两者之间应遵循以下原则: 📢📢

  • 若不使用ACS组件的P2P请求重定向P2P完成重定向功能,则ACS与非ACS组件可混合使用,不影响两者的互操作性,且ACS组件的子集仍然可开启ACS功能。
  • 若PCIe系统使用了ACS P2P请求重定向或/和ACS P2P完成重定向功能,则PCIe系统中使用这些功能的组件必须支持ACS上行重定向请求的上行转发,尤其是 -
    • 相关RP必须支持ACS上行转发,否则RP无法处理上行重定向请求或完成TLP,此时RC也必须实现重定向请求的验证。
    • 每个开启了P2P事务重定向的ACS组件及相关RP之间的所有中间交换节点必须支持ACS上行转发,否则这些交换节点无法处理上行重定向事务。

🌟2.4 ACS P2P控制交互

  对于每一笔P2P请求,多个ACS控制机制会相互影响并最终决定将当前请求的处理方式:① 直接路由到P2P目标、② 视为ACS违例立即拦截 或③重定向上行至RC进行访问验证。P2P完成重定向不受制于ACS P2P 完成重定向机制。

  若Port/Function开启了ACS定向转换P2P功能,无论ACS P2P请求重定向及ACS P2P出口控制设置如何,AT域显示为转换后地址的P2P间存储器访问请求必须被正常路由至其P2P目的Port/Function。如果没有开启ACS定向转换P2P功能,P2P间存储器访问请求必须无条件服从ACS P2P请求重定向及ACS P2P出口控制设置相关机制。具体而言,就是出口控制向量比特、ACS P2P出口控制使能比特(E)及ACS P2P请求重定向比特(R)三者共决定如何处理该P2P请求,如下表所示。

表2 ACS P2P请求重定向及ACS P2P出口控制交互

ER出口控制向量比特对P2P请求的处理方式
00x(0/1)直接路由至P2P目的地
01x(0/1)上行重定向
101视为ACS违例
100直接路由至P2P目的地
111上行重定向
110直接路由至P2P目的地

⚠️ 注意:由于传统Device支持锁定访问,若ACS P2P请求重定向目标为传统Device,无法保证访问的原子性


🌟2.5 ACS违例错误处理

  硬件或软件设计缺陷均有可能导致ACS违例。为便于隔离错误及分析错误原因,建议在ACS组件中实现AER(Advanced Error Reporting)能力。开启AER prefix/header记录功能后,若出现ACS违例,可通过分析违规请求的prefix/header来定位出现问题的原因。

  当出现ACS违例时,作为完成者的ACS组件应遵循以下规则进行处理:

  • 对于非转发请求,完成者需产生完成状态为CA的完成事务;
  • 完成者需记录并上报ACS违例错误。即便已经发出了CA完成事务,也应照常记录并上报ACS违例错误,并对错误进行记录;若该错误为非致命错误,则按照相关规则对该错误进行处理。

🌟2.6 ACS重定向对排序规则的影响

  开启了ACS P2P请求重定向功能后,重定向之后的P2P请求会出现违反常规的事务排序规则的情况。


⭐️2.6.1 排序违例1 - 完成事务超过转发请求事务

  排序违例:根据PCIe事务排序规则,非宽松排序的完成事务不允许超过转发请求事务。但当P2P转发请求被重定向后,其后续P2P非宽松完成事务会直接被路由到P2P目的地,从而超过了重定向后的转发请求事务。

  解决方案:为了避免以上这种排序违例,可用开启ACS P2P完成重定向功能。开启了ACS P2P完成重定向功能后,所有的P2P非宽松排序完成事务会同P2P转发请求一样被重定向。由于相同TC的请求事务可用超过完成事务,开启完成事务重定向后,即便未开启P2P转发请求重定向,也不会影响排序规则。

  开启了ACS完成事务从定向后,所有的的P2P完成事务都会被先先送往RC再送往P2P目的地,显然这比直接送往P2P目的地要慢,影响传输性能。考虑到开启了宽松排序的完成事务不会被重定向,强烈建议请求者开启完成事务宽松排序,一次提升性能。


⭐️2.6.2 排序违例2 - 请求事务超过转发请求事务

  排序违例:根据PCIe事务排序规则,非转发请求事务或非宽松排序的转发请求事务不允许超过转发请求事务。若ACS P2P请求重定向功能及ACS定向转换P2P功能同时开启,很容易出现部分P2P请求被重定向、部分P2P请求直达P2P目的时的情况,从而引起排序规则违例。

  解决方案:为避免这种排序违例的发生,只有在提前确定该违例不会发生的情况下才能同时开启这两种ACS功能。



❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

✨3. ACS软件配置

  并不是所以的PCIe组件都具备ACS能力,也不是具备ACS能力的PCIe组件具备所有的ACS访问控制能力。在PCIe设备枚举时,软件查看PCIe ACS扩展能力结构寄存器(图2,图3)来确认PCIe组件是否具备ACS访问控制能力,软件读取ACS能力寄存器来获知其具备哪些ACS能力(图4)。ACS服务在硬件上是默认关闭的,想要使用ACS访问控制服务需要通过软件配置ACS控制寄存器(图5)来打开对应能力。

图2 ACS扩展能力结构

图2 ACS扩展能力结构

图3 ACS扩展能力结构头标

图3 ACS扩展能力结构头标

图4 ACS能力寄存器

图4 ACS能力寄存器

图5 ACS控制寄存器

图5 ACS控制寄存器



📚 参考

  1. PCI Express Base Specification Revision 5.0 Version 1.0 (22 May 2019)
  2. PCI-SIG, ACS Enhancement
  3. PCIE总线的地址问题
  4. PCI-SIG SR-IOV Primer
  5. IOMMU group and PCIe ACS问题
  6. Introduction to PCIe Access Control Services
  7. IOMMU是如何划分PCI device group的
  8. PCIe Glossary | PLDA
  9. PCI Passthrough with PCIe devices behind a non-ACS switch in vSphere

http://www.ppmy.cn/news/593110.html

相关文章

谈谈对APC的一点理解

谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。 1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。 2) I/O管理器使用…

内核APC用户APC详解

内核APC 线程切换 SwapContext 判断是否有内核APC KiSwapThreadKiDeliverApc 执行内核APC函数定位到SwapContext函数,然后查看KernelApcPending的值是否为空,不为空则跳转,这里只是进行判断,我们往上跟 然后回到KiSwapContext 再…

APCS

介绍 APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自 C、 Pascal、也可以是用汇编语言写成的。…

apc和apcu

apc apc(alternative php cache) apc的功能分为两部分 1. opcode缓存 2. 数据缓存,可以存储k/v对,类似memcache apc的问题 在php5.3.* 之后的版本自带php_opcache,不再需要apc的opcode缓存功能apc的3.1.14版本在php5.5版本上有严重的内…

APC机制详解

文章目录 APC的本质APC队列APC结构APC相关函数KiServiceExitKiDeliveApc 备用APC队列ApcState的含义挂靠环境下的ApcState的含义其他APC相关成员ApcStatePointerApcStateIndexApcStatePointer与ApcStateIndex组合寻址ApcQueueable APC挂入过程KAPC结构挂入流程KeInitializeApcA…

先进控制技术(APC) 改善企业效益-智能工厂的基石

现代复杂的工业生产过程,通过实施先进控制,可以大大提高工业生产过程操作和控制的稳定性,改善工业生产过程的动态性能,减少关键变量的运行波动幅度,使其更接近于优化目标值,从而将工业生产过程推向更接近装置约束边界条件下运行,最终达到增强工业生产过程的稳定性和安全…

什么是APC模型

一、APC模型的由来 在社会科学领域,社会科学家们总是很关心各种各样的社会变迁,例如在过去几十年间人们的健康程度(如某疾病的患病率)有着什么样的变化趋势,人们的社会态度(例如性别观念)又是怎…

先进过程控制之一:浅说APC

先进过程控制(APC)技术作为在生产装置级的信息化应用,在优化装置的控制水平和提高生产过程的管理水平的同时,还为企业创造了可观的经济效益。 1、什么是APC 先进过程控制,简称APC,并不是什么新概念。它仅…