linux PCIe driver
文章平均质量分 78
linjiasen
这个作者很懒,什么都没留下…
展开
-
【15】linux怎么手动安装pciutils
ubuntu系统自带的pciutils是3.3.1版本的,这个版本的pciutils还不能识别dpc这种capability,需要手动更新1、github上下载pciutilshttps://github.com/pciutils/pciutils可以通过git命令行下载也可以直接下载压缩包2、把pciutils的源码上传到ubuntu服务器3、参考README 编译 安装pciut...原创 2019-02-28 17:03:40 · 6146 阅读 · 1 评论 -
【23】share中断引发的教训和PCIe DPC代码的bug
最近在验证某款芯片的DPC和热插拔功能,发现在暴力拔出和插入SSD时,dpc_irq都会被调勇到,但是DPC Status又显示没有触发DPC,一开始以为是芯片bug。后面查询了一下share中断的东西,发现是老版本dpc的代码的bug。(说到这里就汗颜了,以前在某不止是500强工作时也遇到一样的问题—中断服务函数被调用,然后status reg为0,有个打印,会频繁打印。我当时没有搞清楚shar...原创 2019-05-08 14:07:18 · 2352 阅读 · 1 评论 -
【30】如何通过pciehp sys文件系统poweron/poweroff对应的slot,及pciehp代码分析
pciehp_probe->pci_hp_add->fs_add_slot会创建对应的slot我们去/sys/bus/pci/slots中看看每个slot的address,对应的root power都是我们预留出来支持热插拔的cat power就会调用的power_read_filestatic struct pci_slot_attribute hotplug_slo...原创 2019-08-02 12:00:05 · 1991 阅读 · 1 评论 -
【32】linux5.0之后 pciehp引入的bug
使用linux 5.2验证pciehp,发现按按钮后,上下电流程反复触发。把pciehp独立成一个KO后,加了一些打印,发现linux 5.0重构的pciehp流程后,导致线程和中断并发。虽然5.2打了几个补丁,在线程处理完毕后ignore一下对应的event,其实并没有啥鸟用。中断依然打断线程,可能在取出事件后,上下电流程才ignore 对应的event。不得不吐槽一下内核自带pciehp和...原创 2019-08-12 10:15:23 · 3734 阅读 · 3 评论 -
【65】如何通过sys文件系统remove和probe一个PCI设备
\-[0000:00]+-01.4-[03]--+-00.0 Intel Corporation I350 Gigabit Network Connection | \-00.1 Intel Corporation I350 Gigabit Network Connection1、手动remove一个pci设备(bus:device.function 3:0.0和3.0.1)echo 1 > /sys/bus/pc...原创 2020-07-07 17:29:11 · 6816 阅读 · 1 评论 -
【80】PCIe EP driver初始化
任何一个PCIe EP的功能都分成两部分,其中一部分是PCIe功能,另外一部门是自己的域内的功能(比如网卡、FC、SAS、Nvme、GPU),其中PCIe域内的功能的初始化都是套路。主要涉及下面几个方面: 1、准备一个数据static struct pci_driver xxx_driver,该数据结构主要包括:(1)const struct pci_device_id(存放EP的device和vendorid)(2)int (*probe)(struct pci_dev *de...原创 2021-09-22 14:35:33 · 2964 阅读 · 0 评论