PCIE error 注错 OS AER禁用

由于kernel需要为大多数使用者负责,追求通用性,导致aer记录的错误信息较少

PCIe Aer Report 发现OS直接处理错误 没有让BIOS处理,BMC无法记录到错误日志,所以需要禁用OS 自带的AER 处理机制

Fatal Error 由OS进行处理 :

Linux kernel的AER是怎么工作的?

这PCI Express端口服务驱动程序,名称为"aer",类型为PCI_EXP_TYPE_ROOT_PORT,服务类型为PCIE_PORT_SERVICE_AER。该驱动程序包含以下功能:

通过这些函数,驱动程序可以实现对PCI Express根端口的高级错误报告(AER)服务的探测、移除、错误恢复和链接重置等功能。

  • probe:用于探测(probe)PCI Express端口服务的函数aer_probe。
  • remove:用于移除(remove)PCI Express端口服务的函数aer_remove。
  • error_resume:用于错误恢复(error resume)的函数aer_error_resume。
  • reset_link:用于重置链接(reset link)的函数aer_root_reset。

中断服务函数aer_irq就是读取AER CAP中的status和source id 寄存器来确定是否产生了AER,收到的第一个错误message的id是多少,把status和id推到fifo中,然后就启动线程。

 

 

 

线程aer_isr从Root Port 开始walk_bus遍历该root port下面的所有PCIe设备,读取设备aer status寄存器和aer mask寄存器,如果status对应bit为1且mask 对应bit为0,则加入struct aer_err_info *e_info的数据结构中等待处理。

1.实验环境:

IOMMU 需要打开  OS禁用AER

kylin系统默认AER打开

_OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]

 

修改grub参数

修改文件/etc/default/grub

找到 GRUB_CMDLINE_LINUX 添加

GRUB_CMDLINE_LINUX="pci=noaer"

然后执行 根据自己的OS找到对应的grub.cfg

 sudo grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg

pci=noaer   ,保存重启后dmesg查看修改成功OS now control不包含AER

注入ecrc_tx:

./NbioErrorInjector pcie_err_inject -t ecrc_tx -s 20:3.1 -e unmask_err_report -d 1 -c 3 -i 3

触发了smi OS出现kernerl Panic 系统重启后正常开机,bmc有错误日志

 Bit19

根据Uncorr erro status 判断为ecrc error status错误

注入acs_fatal

 

./NbioErrorInjector pcie_err_inject -t acs_fatal -s 20:3.1 -e unmask_err_report -d 1 -c 3 -i 3

注错不成功 报错ACS Source Validation 为0

Lspci -s 80:1.2  -vvv 查看 ACSCtrl  SrcValid为0

setpci -s 80:1.2 0x2a6=0xff

修改成功后可以注入ACS 的错误

触发了smi OS出现kernerl Panic 系统重启后正常开机,bmc有错误日志

 Bit21

根据Uncorr error status 判断为ACS Violation 错误

注入:acs_nonfatal:

./NbioErrorInjector pcie_err_inject -t acs_nonfatal -s 20:3.1 -e unmask_err_report -d 1 -c -i 1   //注一次

Dmesg 可以看到hardware error 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小菜鸟-BIOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值