admin管理员组

文章数量:1516870

2021, Dec日志

PCIe定义了很多的Cap.

但大多数人只用到了其中一些最常用的,比如MSI/MSIX, PMC, ARI, PCI express, PASID等等

还有很多Cap, 没有深入了解的实践机会, 比如LTR, OBFF, TPH, 等等,等等,非常之多。

另外一些Cap,  比如AER, DPE/eDPC, ACS, ATS, SRIOV有一点点了解。

ATS, PASID可以看成TA(translation agent), ATPT(address trans and protection talbe), ATC的一个有机整体组合。(TA+ATPT = IOMMU)

EP通过ATS从TA取得translated的地址保存于ATC中,之后减轻了AT的负担。

PASID针对于GVA到SPA的地址映射,作为TA中GCR3的index在使用(BDF, PASID, GVA),相较于GPA到SPA的(BDF, GPA)

ACS与SRIOV上一个日志,有过一些讨论

2021,Dec日志-GPU,DPU,IO虚拟化_笃行笔记的博客-CSDN博客

AER/DPC

Linux内核有相应的支持

pcie « pci « drivers - kernel/git/torvalds/linux.git - Linux kernel source tree

PCI « Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree

在PCI express Cap中有关于(CE, UCE Fatal/Non-Fatal,UR)的相应控制与状态Registers

AER则将各error的控制,Severity, 状态, 及LOG, Source,进一步细化与升级(有一点点类似MSI到MSI-X的演进)

其中,有类似advisory-non fatal从UCE到CE的转化,是一个特殊情况

x86的BIOS也参与到AER的信息收集工作中,就是典型的OS-first还是FW/BIOS-first

无论是OS-first或者FW-first,Linux的AER/DPC则通过pcie_do_recovery运行一个简单的状态机,执行struc pci_driver中注册的struct pci_error_handlers (detected, mmio_en, link_reset, slot_reset, resume etc.)

本文标签: 2021Dec日志