0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Root如何处理来自其他PCIe设备的错误消息

SwM2_ChinaAET 来源:未知 作者:李倩 2018-08-28 09:44 次阅读

这一篇文章讲一讲,高级错误报告(Advanced Error Reporting,AER)关于可校正和不可校正错误的相关寄存器,以及Root如何处理来自其他PCIe设备的错误消息等内容。

Ø 高级可校正错误处理(Advanced Correctable Error Handling)

o 高级可校正错误状态

高级可校正错误状态寄存器如下图所示,当相关错误发生后,硬件会自动地将对应bit置1。软件可以通过向对应bit写1,来清零。

o 高级可校正错误屏蔽

高级可校正错误屏蔽寄存器如下图所示,默认情况下,这些bit的值都是0。也就是说,只要发生相关错误,且该错误报告功能被使能,则相关错误便会被报告(不被屏蔽)。当然,软件可以通过将相关bit置1,来屏蔽相关的错误报告信息

Ø 高级不可校正错误处理(Advanced Uncorrectable Error Handling)

o 高级不可校正错误状态

高级不可校正错误状态寄存器如下图所示,当相关错误发生时,不管这些错误会不会被报告到Root,相关的bit都会被置1。

回顾一下,前一篇文章中的当前错误指针(First Error Pointer)。假设该指针的值为18d,则表明不可校正错误状态寄存器中的第18位对应的错误——异常的TLP(Malformed TLP)将会被最先处理。一旦该错误被处理后,软件将会向不可校正错误状态寄存器的第18位写1,来清除该bit。然后,当前错误指针将会被更新到下一个值。

软件可以通过高级不可校正错误严重度寄存器(Advanced Uncorrectable Error Severity Register)来修改不可校正错误是否被作为致命的(Fatal)错误处理,进而使得这些错误得到区分处理。如下图所示,其中,0表示非致命的(Non-Fatal),1表示致命的(Fatal)。

o 高级不可校正错误屏蔽

高级不可校正错误评级寄存器如下图所示,当相关bit被置1时,对应的错误类型将不会被报告。

配置空间中的高级错误报告结构中包含有一个4DW的子空间,用于缓存接收到的,发生不可校正错误的(未被屏蔽的)的TLP的包头。PCIe Spec规定,当设备支持AER功能时,必须有能力至少缓存一个TLP包头(4DW)。当然,有些设备可能支持缓存更多的TLP包头。该子空间被称为包头缓存寄存器(Header Log Register),其支持的错误类型如下图所示。

在PCIe总线拓扑结构中,Root是所有其他PCIe设备错误报告的目标(Target)。当Root接收到来自其他PCIe设备的错误消息(Error Message)后,Root会根据系统的参数设置选择是否向系统报告错误,并以何种方式(中断等)报告。

注:关于PCIe的中断机制会在后续的文章中详细介绍。

当Root接收到错误消息后,便会将Root错误状态寄存器中的对应位置位。需要注意的时,由于Root自身也是PCIe设备,当其自身发生错误时,也会导致Root错误状态寄存器中的对应位置位,就像是其收到了错误消息了一样。该寄存器如下图所示:

前面的文章介绍过,错误消息也是消息(Message)的一种。错误消息中包含了错误源设备的ID信息(BDF,Bus,Device and Function),根据ID信息,便可以确定错误源的位置等信息,同时将该信息缓存在高级源ID寄存器中,如下图所示。

可以通过Root错误命令寄存器(Root Error Command Register)的相关bit来使能或者禁止相关类型的错误是否被报告至系统。如下图所示:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5025

    浏览量

    117702
  • PCIe
    +关注

    关注

    13

    文章

    1083

    浏览量

    80798
  • root
    +关注

    关注

    1

    文章

    82

    浏览量

    21235

原文标题:【博文连载】PCIe扫盲——高级错误报告AER(二)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    英特尔至强处理器可扩展系列是否支持PCIe AtomicOps主机到设备交易?

    PCIe规范定义了3种类型的AtomicOps事务:“AtomicOps的架构适用于设备到主机,设备设备和主机到设备的交易。”如果英特尔®
    发表于 10-15 11:23

    何处理“map.ncd缺失”的错误

    :198”并阅读MAP修正问题的主答复记录。有人告诉我如何处理它?以上来自于谷歌翻译以下为原文i think the problem "map.ncd is missing"lead
    发表于 07-19 11:38

    何处理多个外围设备

    给出了一个中央到周边活动连接堆栈限制(假设我没有误导),还有最佳实践/任何的“100天”的例子说明连接到已知的(btaddr处理设备吗?我一直告诉周围必须在广告的状态,虽然我已经有来自以前的扫描可以利用手柄。我可以采取
    发表于 09-24 14:30

    MCU功耗来自何处

    MCU功耗来自何处?低功耗MCU设计考虑平均功耗计算范例
    发表于 02-24 07:38

    MCU功耗来自何处

    MCU功耗来自何处 在开始讨论低功耗MCU设计前,必须先探讨MCU功耗的来源,其主要由静态功耗及运行功耗两部分组成。考虑实际的应用,最后决定系统功耗性能指针则必须计算平均功耗。 运行功耗 现代 MCU 已整合相当多的的模拟外围,不能单纯考虑数...
    发表于 11-01 09:31

    PCIe设备发出MSI-X中断请求的方法

    x86处理器如何处理MSI-X中断请求PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字
    发表于 02-16 06:36

    PCIe的Spec中明确规定只有Root有权限发起配置请求

    处理器一般不能够直接发起配置读写请求,因为其只能产生Memory Request和IO Request。这就意味着Root必须要将处理器的相关请求转换为配置读写请求。针对传统的PCI设备
    的头像 发表于 05-04 09:12 6649次阅读
    <b class='flag-5'>PCIe</b>的Spec中明确规定只有<b class='flag-5'>Root</b>有权限发起配置请求

    PCIe总线的错误报告机制中四个比较重要的概念

    错误报告(Error Reporting):通知系统某个(或多个)错误发生了。在PCIe总线中,发生错误设备会通过
    的头像 发表于 08-17 10:09 6191次阅读

    PCIe扫盲—PCIe错误检测机制的详细资料概述

    PCIe总线错误检测囊括了链路(Link)上的错误以及包传递过程中的错误,如下图所示。用户设计的应用程序层中的错误不属于链路传输中的
    的头像 发表于 08-18 11:05 1.5w次阅读

    PCIe错误报告机制上高级错误报告AER

    也是其他错误的根源。PCIe Spec V2.1还支持多个错误的追踪(Tracking Multiple Errors)。
    的头像 发表于 08-27 11:31 6892次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>错误</b>报告机制上高级<b class='flag-5'>错误</b>报告AER

    PCIe设备在一个系统中是如何发现与访问的

    PCIe体系架构一般由root complex,switch,endpoint等类型的PCIe设备组成,在root complex和swit
    的头像 发表于 03-11 15:28 1.8w次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>设备</b>在一个系统中是如何发现与访问的

    PCIe错误报告的两种机制详解

    该机制是PCIe设备必需支持的一种错误报告机制,同时设备会定义最小的错误报告请求。应该是通过配置Device Control和Command
    的头像 发表于 10-23 11:14 2.2w次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>错误</b>报告的两种机制详解

    x86处理器如何处理MSI-X中断请求

    x86处理器如何处理MSI-X中断请求PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字
    发表于 12-17 18:28 9次下载
    x86<b class='flag-5'>处理</b>器如<b class='flag-5'>何处理</b>MSI-X中断请求

    何处理RTOS错误和超时

      在典型系统中,许多路径流经 RTOS,因此它处于检测和处理错误的良好位置。一般来说,函数的返回值,尤其是 RTOS 服务,不应该在没有检查的情况下使用。
    的头像 发表于 06-29 09:46 2330次阅读
    如<b class='flag-5'>何处理</b>RTOS<b class='flag-5'>错误</b>和超时

    什么是串扰?该如何处理它?

    什么是串扰?该如何处理它?
    的头像 发表于 12-05 16:39 421次阅读
    什么是串扰?该如<b class='flag-5'>何处理</b>它?