![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PCIe协议及应用
文章平均质量分 81
linjiasen
微信:BuenosAires_L
展开
-
【96】write combine机制介绍
这篇文章主要介绍了write combine的机制提示:以下是本篇文章正文内容,下面案例可供参考上图中的白色框就是memory system的组件。其中main memory在处理器芯片外,是离processor execution units最远的。Cache是离processor execution units(处理器中负责执行指令和计算操作的部分)最近的。原创 2024-06-07 21:01:05 · 771 阅读 · 0 评论 -
【95】哪些错误会记录Header log
1、AER Mask Reg和Header Log Reg的关系如果PCIe设备实现的AER capability,那么uncorrectable error mask reg和correctable error mask reg就可以针对每种错误来独立地mask。如果Device control reg和PCI command reg中error message report没有使能,那么不管对应的mask reg是什么值,对应的error message都不会发出。原创 2024-04-30 15:30:39 · 709 阅读 · 0 评论 -
【94】pcituils解析
pcituils代码解析原创 2024-01-26 18:33:08 · 792 阅读 · 0 评论 -
【93】PCI Expansion ROM
PCI expansion ROM原创 2023-08-29 19:34:13 · 1006 阅读 · 5 评论 -
【92】实测:访问不存在的function导致UR
协议规定访问不存在的function会导致UR,今天我们就来实测一下。这篇文章主要设计下面几个方面:1、X86上的memory config2、config方式访问不存在的设备导致UR3、UR和advisory non fatal转换4、header log解析【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介_linjiasen的博客-CSDN博客configuration read访问没有实现的function会导致UR的错误。原创 2023-05-19 19:21:43 · 1081 阅读 · 1 评论 -
【91】PCIe header format分类
其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。其中RequesterID字段(bit31-16)的高8bit(bit31-24)为bus,中间5bit(bit23-19)为device,低3bit(bit18-16)为function。原创 2023-03-28 20:55:51 · 1559 阅读 · 0 评论 -
【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介
1、 4种空间迷魂阵PCIe架构下定义了4中地址空间:Memory空间、IO空间、配置空间和message空间。我们先看一下PCIe spec关于这四种空间的定义:(1)配置空间 Configuration SpaceOne of the four address spaces within the PCI Express architecture. Packets with a Conf......原创 2019-02-26 19:38:17 · 36139 阅读 · 19 评论 -
【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 · 6490 阅读 · 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 · 2427 阅读 · 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 · 2183 阅读 · 1 评论 -
【31】poisoned TLP导致的MCE问题
(1)发送端支持TLP poisoning功能是可选的(2)数据中毒功能仅仅适应于写请求(posted或non-posted),message with data,原子操作请求,读完成包,原子操作完成包的数据。a。中毒TLP中毒是通过TLP中的EP比特来显示。b。...原创 2019-08-03 10:49:06 · 3149 阅读 · 0 评论 -
【37】linux kernel 对于PCIe CRS的处理
配置空间的root control reg的CRS software visibility enable bit。当该bit为1时,会把CRS的completion包的处理给软件。这句话啥意思呢,我们来看一下linux kernel在枚举设备时的代码就知道了。bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u...原创 2019-09-20 13:33:29 · 2972 阅读 · 2 评论 -
【51】PCIe简介
之前写的一个PCIe简介的PPT,都是些PCIe领域的基本概念。现在觉得写这样的PPT给大家讲挺没有意思的,但是很多人都喜欢听这种形式。怎么说呢,如果别人给你说一下,你就全懂了,然后可以工程了,那只能证明他说的东西本身就没啥技术含量。有技术含量的东西就是我告诉你方案,你依然做不出产品。比如原子弹,全世界读过高中物理的都知道把铀235浓缩到一定程度,然后压缩的临爆点就是原子弹,但是世界上独立发展出原......原创 2020-02-17 11:32:57 · 1872 阅读 · 31 评论 -
【52】NVMe暴力热插拔对系统的要求
1、 SFF-8639SFF-8639也叫U.2,物理结构可以兼容SAS/SATA/SATA Express/Nvme。SFF-8639详细的引脚定义可以参考PCI Express SFF-8639 Module specification。其中比较重要的sideband信号有PWRDIS、IfDet#、PERST#、DualPortEn。PWDIS:该信号assert时,disa...原创 2020-02-17 17:25:22 · 15771 阅读 · 0 评论 -
【56】linux NTB 的测试工具
https://www.kernel.org/doc/html/latest/driver-api/ntb.htmlhttps://github.com/jonmason/ntb/wiki/Linux-NTB-HOWTO-build-and-installhttps://github.com/jonmason/ntb/wiki/Linux-NTB-HOWTO-testhttps://www....原创 2020-02-27 11:41:29 · 4124 阅读 · 3 评论 -
【58】PCIe错误处理机制是如何工作的
向我最喜欢的对冲基金大佬-达里奥致敬,模仿《经济机器是如何运行的》写了一篇《PCIe错误机制是如何工作的》。文章主要介绍了主流的OS native model AER是怎么工作的。1、 错误分类PCIe的错误可以分成两类:不可修复错误和可修复错误,其中不可修复错误又可以细分为致命和非致命两种。可修复错误由硬件修复不需要软件参与,并且修复行为不会导致任何信息的丢失。软件可以记录错误发生的频率...原创 2020-04-02 15:57:50 · 7434 阅读 · 6 评论 -
【64】事情也许没有想的那么复杂,大道至简,再谈AER
在验证某芯片的AER功能时,突然发现RootPort的AER上报功能时正常,但是RootPort下面的网卡的出现PCIe错误时,竟然没有触发AER中断。 当时心里想,不会是芯片问题吧。要么是网卡的aer status 比特置1了,但是网卡没有发出error message,要么是网卡发出的error message被CPU给丢了。于是看了下网卡芯片的配置空间,和错误上报相关的寄存器都是正常的,难道是网卡有什么特殊寄存器控制error message上报或者CPU把error message...原创 2020-05-27 09:59:36 · 1360 阅读 · 0 评论 -
【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 · 7235 阅读 · 1 评论 -
【67】PCIe Power Management和linux对PME的处理
1、什么是PME PME(power management events)是一种特殊的post TLP,它起源于PCIe EP、PCI EP或者RP并且路由到RC。PME message中的requestid字段代表出现PM state变化的设备。 由于RP下面有很多设备,但是root status寄存器的requestid只有一个,RC里有一个buffer可以存储这些PME message,由于buffer是有限的,这样就可以导致backpressure问题(反压问题在PC......原创 2020-09-04 18:09:11 · 8126 阅读 · 4 评论 -
【70】NTB的地址映射和地址转换
NTB有两个重要的应用(1)PCI于隔离,即可以隔离出两个或者多个PCI系统(2)实现地址翻译。这篇文章注重说一下地址翻译,关于NTB一些介绍和应用见:https://blog.csdn.net/linjiasen/article/details/104532342https://mp.weixin.qq.com/s/0Ais2S-GnFfsWRnoWhjRzwhttps://mp.weixin.qq.com/s/-AAxGslLt0nZkVCn3KWI7Qhttps://mp.weixin.原创 2020-12-03 21:09:36 · 2876 阅读 · 0 评论 -
【71】力科PCIe 协议分析仪常见操作
1、隐藏或者显示某一类的trace2、查找每一类型的trace3、split功能Split功能会把相关的包给放在一起,比如读请求和completion包,以方便分析trace4、traffic report功能点击最上面的traffic report功能,会显示每种所有的traffic的统计。比如traffic 中的split中会统计每种的包的时延,只要点击对应栏目,就会自动跳转到trace。分析响应缓慢时,比较有用。5、error report点击右下角原创 2020-12-29 17:07:12 · 7923 阅读 · 8 评论 -
【79】PCIe 5.0协议规定的PCIe错误
经过近一个月断断续续的梳理,终于PCIe 协议5.0规定哪些场景会导致哪种PCIe错误梳理完毕了。不得不感慨,5.0新增了很多capability。文章放不下了,上传CSDN资源了。大体的格式如下原创 2021-08-13 18:05:20 · 788 阅读 · 0 评论 -
【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 · 3168 阅读 · 0 评论 -
【85】退出fundamental reset后20ms无法进入detect是否可以再次linkup
一、背景PCIe协议规定,在退出fundamental reset后,component必须在20ms进入LTSSM detect状态。那么如果EP在20ms以内没有进入detect状态,CPU或者Switch和EP的link状态能否正常到Linkup,也就说说LTSSM能够到L0?二、测试设备Intel 11th Gen Intel(R) Core(TM) i7-11700K、Broadcom Switch PEX87xx、PLDA inspector、Xilinx V13P...原创 2021-12-02 20:46:05 · 4795 阅读 · 6 评论 -
【82】PCIe LN协议
1、历史PCIe 6.0已经废弃了该协议,至于废弃的原因PCIe 6.0 ver0.9版本没有说。 Lightweight Notification (LN) ProtocolLN协议使得EP可以感知host memory的cacheline的变化。LN机制利用EP端的Cache来降低系统带宽需求并降低时延。LN协议允许EP注册host memory中的Cacheline,所谓注册Cacheline是指把host memory Cacheline的内容copy一份放到EP本地原创 2021-11-02 19:51:09 · 1499 阅读 · 3 评论 -
【86】ASPM进入和退出L1
1、ASPM介绍 ASPM全称Active State Power Management,是针对Power Management的一种管理机制。所谓“Active State”就是设备在D0状态下进入低功耗模式的管理机制。ASPM是硬件行为,软件只能写function配置空间Link Control Register的ASPM Control比特来disable和允许进入某种L state。 PCI-PM是软件写function的配置空间的Power Management Co...原创 2022-04-24 15:02:56 · 7882 阅读 · 2 评论 -
【88】SR-IOV
PCI SRIOV系统介绍原创 2022-08-13 22:53:00 · 3134 阅读 · 0 评论 -
【90】RootPort的completion timeout为什么不能阻止CPU发生MCE
PCIe completion timeout介绍、intel CPU架构、inter CPU timer原创 2023-01-07 17:40:12 · 3195 阅读 · 4 评论 -
【75】PCIe错误的Firmware first model和OS native model
之前写过一篇怎么禁止Firmware first model的文章,感觉内容组织得有点混乱,本来想删了重新,看到有人收藏了,索性新写一篇吧。PCIe错误的Firmware first model和OS native model Firmware first model 错误通过SMI中断到CPU,CPU进入SMM mode,并调用BIOS/firmware注册handler,BIOS/firmware先收集故障信息,把错误信息填写到APEI表,然后通过SCI或者NMI通知OS。详细流程可以参原创 2021-04-30 16:48:46 · 4090 阅读 · 5 评论