如何向根复合体报告pcie错误?

如何向根复合体报告pcie错误?,pci,pci-e,Pci,Pci E,比如说,pci express设备实现了AER功能,以实现健壮的错误报告。因此,当设备截获此类错误时,它会相应地填充其AER寄存器。如何将此错误报告给根复合体?我在规范中读到,此类错误将通过“消息TLP”报告。此“消息TLP”是否意味着将触发MSI向根复合体发送指示?同样的机制是否也用于报告其他/非AER错误?PCI Express错误是通过称为消息请求(缩写为Msg)的特定类型的TLP(事务层数据包)报告的。Msg是一种通用TLP,用于多种用途(PCI兼容性中断信号、电源管理、热插拔信号等,以

比如说,pci express设备实现了AER功能,以实现健壮的错误报告。因此,当设备截获此类错误时,它会相应地填充其AER寄存器。如何将此错误报告给根复合体?我在规范中读到,此类错误将通过“消息TLP”报告。此“消息TLP”是否意味着将触发MSI向根复合体发送指示?同样的机制是否也用于报告其他/非AER错误?

PCI Express错误是通过称为消息请求(缩写为Msg)的特定类型的TLP(事务层数据包)报告的。Msg是一种通用TLP,用于多种用途(PCI兼容性中断信号、电源管理、热插拔信号等,以及错误信号),并与其他TLP类型(内存读取请求、内存写入请求、完成、配置读取/写入等)不同

错误消息TLP是来自检测到错误的设备的消息,指定检测到的错误类别以及在哪个设备中检测到的错误。发送设备可以通过多种不同的方式指定Msg TLP路由。其中一种方法是“路由到根复合体”,它引导任何中间组件(如交换机(网桥))将TLP向上游转发到根复合体。错误详细信息记录在特定设备的AER功能中(如果它实现了AER功能——大多数PCI-E设备都实现了),然后向根复合体的上游发送一条错误信号

在根复合体中,有两种向平台报告错误的方法

  • 如果在PCI Express功能的根复合体的根控制寄存器中启用,则可以将其报告为“系统错误”(这是PCI和PCI-X兼容机制)。对系统错误的处理是特定于平台的。在典型的x86机器上,无法纠正的错误会导致机器检查异常。(主板上通常有一种机制,用于在事件日志中记录发生的情况,软件随后可以访问该日志。有关更多信息,请参阅此链接:)
  • 如果在根复合体的根命令寄存器(根的AER功能的一部分)中启用,根复合体还可以通过MSI生成中断。我不认为这是经常使用的
  • 实际上,没有一类错误是“非AER错误”。然而,设备不必实现AER功能。在这种情况下,“不支持高级错误报告功能的设备只记录指示已检测到错误的设备状态寄存器位。”因此错误的详细信息将丢失