【64】事情也许没有想的那么复杂,大道至简,再谈AER

阅读: 评论:0

【64】事情也许没有想的那么复杂,大道至简,再谈AER

【64】事情也许没有想的那么复杂,大道至简,再谈AER

  在验证某芯片的AER功能时,突然发现RootPort的AER上报功能是正常,但是RootPort下面的网卡的出现PCIe错误时,竟然没有触发AER中断。

  当时心里想,不会是芯片问题吧。

(1)网卡的aer status 比特置1了,但是网卡没有发出error message?

(2)网卡发出的error message在PCIe链路上丢了?

(2)网卡发出的error被CPU丢了?

  于是看了下网卡芯片的配置空间,和错误上报相关的寄存器都是正常的,难道是网卡有什么特殊寄存器控制error message上报或者CPU把error message给丢了........越考虑越复杂。

  后来只能把整个链路上的配置空间都导出来看看,不得不说dump regs,然后用beyondcompare比较真是个好办法,发现竟然是RootPort的bridge ctrl 寄存的SERR bit没有置1。

这个bit是用来控制转发下游设备发送的error message的。

注意bridge ctrl的 SERR和cmd reg的SEER是两码事,该比特在aer 路径上的地位可以参考:

【58】PCIe错误处理机制是如何工作的_linjiasen的博客-CSDN博客

SERR# Enable - See Section 7.5.1.1.14 .
This bit controls forwarding of ERR_COR, ERR_NONFATAL and ERR_FATAL from secondary to primary

  如此简单的问题,差点选择了一条不归路。等等,突然想起来了,很多年前,自研AER service的时候已经发现了这个问题,当时看过kernel driver确实存在这个问题,导致下游设备的error message无法上报给OS。这么多年过去了,这个bug不会还没有修复吧。于是,把最新kernel pull下来,发现竟然在5.1才修复了这个bug。kernel的AER果然是为了通用性牺牲了太多功能,不过这已经是kernel作为通用型框架来说的最优解了,搞笑的是很多公司竟然以为这也是最优解,最终把工业产品做成了玩具。

Re: [PATCH] PCI: Enable SERR# forwarding for Type-1 PCI devices - Bjorn Helgaas

本文发布于:2024-02-01 06:30:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674023234561.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:再谈   大道   事情   AER
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23