![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PCIe技术类
文章平均质量分 78
积累一些PCIe的知识
one_bits
士有陪乘,告奔走也
展开
-
PCIe器件无法被枚举的排查方法
PCIe器件无法被枚举的排查方法原创 2022-09-24 16:27:41 · 1416 阅读 · 0 评论 -
PCIe系统复位
PCIe系统复位一、概述PCIe规范描述了四种类型的复位机制。其中三个是PCIe规范早期版本的一部分,现在被统称为传统复位,当中的两个也被称为基本复位(CR,Conventional Resets)。第四个类别和方法是2.0规范修订版中添加的,称为功能级别复位(FLR,Function Level Reset)。二、传统复位1 基本复位基本复位是由硬件处理,它复位整个设备,重新初始化每个状态机、所有硬件逻辑、端口状态及配置寄存器。该规则的例外是一组被标识为“sticky”的配置寄存器字段,除非所有翻译 2021-08-09 17:46:25 · 7103 阅读 · 0 评论 -
PCI错误恢复
PCI错误恢复一、概述许多PCI总线控制器能够探测到总线发生的错误,例如数据和地址线的奇偶校验错误,也称之为SERR、PERR错误。一些高级的芯片能够处理这些错误,比如有PCIe芯片、PCI主桥芯片。典型的操作是断开受影响设备的连接,停止对其所有的I/O操作,其目的是防止系统崩溃掉。例如,由于DMA的野地址操作致使系统内存数据损坏。此时需要提供重连机制,这样有问题的PCI设备就可以复位,并恢复到工作状态中。复位阶段的操作需要设备驱动和PCI控制器芯片之间协调配合进行。二、错误产生后需要做的事情错误产翻译 2021-08-09 10:54:48 · 4846 阅读 · 0 评论 -
PCIe AER的INJECT机制
一、模块背景调试PCIe AER错误恢复代码非常困难,因为它很难触发真正的硬件错误。基于软件的错误注入可用于伪造各种PCIe错误。首先,应该在内核中启用PCIe AER软件错误注入配置,即以下应位于.config中的项目。CONFIG_PCIEAER_INJECT = y或CONFIG_PCIEAER_INJECT = m使用新内核重新启动或insmod模块后,名为设备文件/ dev / aer_inject 会被创建。然后,需要一个名为aer-inject的用户空间工具,该工具可以从此获取:g原创 2021-06-02 16:39:54 · 4016 阅读 · 3 评论 -
PCIe AER的驱动
不同的内核版本对PCIe的AER机制有微妙的差别,本次研究基于linux内核版本:4.9.190。驱动文件的目录:[drivers\pci\pcie\aer]、[drivers\pci\pcie]。PCIe AER的内核模块初始化的位置在[aerdrv.c]。驱动初始化入口:device_initcall(aer_service_init);在aer_service_init里首先要判断能否注册aer驱动。在pci_aer_available-> pci_msi_enabled检查msi中原创 2021-06-02 14:05:33 · 1456 阅读 · 1 评论