PCIE那些事之AER高级信息上报

阅读: 评论:0

PCIE那些事之AER高级信息上报

PCIE那些事之AER高级信息上报

本文总结了AER错误处理流程

什么是AER

AER 英文简称 Advanced Error Reporting 翻译中文是高级错误报告,是PCIE异常信息处理机制,用于报告PCIe 错误信息
错误信息主要分为两种 Correctable Errors 和Uncorrectable errors
其中 Correctable Errors包含非致命的错误和致命的错误
a.ERR_FATAL:致命错误,此错误类型影响了PCIe link链路。
b.ERR_NONFATAL:指影响了设备功能,但是PCIe link还是稳定的
Correctable Errors:可纠正错误是指错误发生后,硬件可以自动恢复。
Uncorrectable errors:错误发生后,影响设备功能,硬件不能自动恢复。

AER信息类型

如下列表所述,注意如果是链路出现了错误需要需要Upstream设备向Root来报告错误进行重新训练


AER错误需要EP和RC端同时打开才能使用
这些错误信息可以通过设备控制器进行使能或者禁止

设备可以通过设备状态寄存器查询AER探测状态

RC寄存器中可以控制是否enable AER功能

AER机制原理

ERROR Message通过port端口上报给Root Complex 最后通过中断方式通知CPU进行处理

PCIe Correctable Errors处理流程
AER Driver同时获取RC和EP的错误状态信息, 此时Errors已经被物理层或者数据链路层给修复,AER仅仅获取错误的状态

PCIE Uncorrectable errors处理流程
AER可以同时获取RC和EP的状态,并行recovery强制热复位修复,复位会重新训练链路,影响系统数据的传输

linux AER处理流程

linux内核通过aerdrv.c进行驱动管理,分为驱动层drv.c和核心层core.c

系统运行的时候会注册aerdriver设备驱动驱动,AER注册成功需要支持以下2个条件
1.kernel中需要开启AER功能配置
2.需要支持MSI中断

static int __init aer_service_init(void)
{if (!pci_aer_available() || aer_acpi_firmware_first())return -ENXIO;return pcie_port_service_register(&aerdriver);
}
device_initcall(aer_service_init);

aerdriver是设备驱动结构体

static struct pcie_port_service_driver aerdriver = {.name		= "aer",.port_type	= PCI_EXP_TYPE_ROOT_PORT,.service	= PCIE_PORT_SERVICE_AER,.probe		= aer_probe,.remove		= aer_remove,.error_resume	= aer_error_resume,.reset_link	= aer_root_reset,
};

调用aer_probe 填充pcie_dev资源,注册中断进行aer错误收集与处理,使能root aer功能

static int aer_probe(struct pcie_device *dev)
{int status;struct aer_rpc *rpc;struct device *device = &dev->port->dev;/* Alloc rpc data structure */rpc = aer_alloc_rpc(dev);if (!rpc) 

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

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

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

标签:高级   信息   PCIE   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