跳转到内容

Linux 内核中的 PCI 总线支持

来自 Wikibooks,开放世界中的开放书籍


⚲ 最常用 API

[编辑 | 编辑源代码]

🗝️ 缩略语

  • ACPI - 高级配置和电源接口
  • ACS - 访问控制服务
  • AER - 高级错误报告端口服务
  • ASPM - 活动状态电源管理
  • EDR - 错误断开恢复
  • FLR - 功能级重置
  • HT - 超传输
  • BAR - 基地址寄存器
  • BW - 带宽
  • DPC - 下游端口包含端口服务
  • EP - 端点
  • mmrbc - 最大内存读取字节数
  • mps - 最大有效负载大小
  • MWI - 内存写入无效
  • PM - 电源管理
  • PMC - ... ... 控制器
  • PME - ... ... 事件,端口服务
  • SR-IOV - 单根输入/输出虚拟化
  • VF - 虚拟函数


⚲ 用户空间 API

从 shell 中查询信息


⚲ 内核空间 API

👁 示例

⚙️ 内部结构

[编辑 | 编辑源代码]

linux/pci_ids.hinc
drivers/pcisrc
pci_opsid

📚 主线文档

[编辑 | 编辑源代码]
PCI 驱动程序 API doc
PCI 支持库 doc
PCI 热插拔支持库 doc
PCI 点对点 DMA 支持 doc

📚 PCI 子系统文档

[编辑 | 编辑源代码]

PCI 子系统 doc,较新的在上面


引导中断重新路由 doc

X86_REROUTE_FOR_BROKEN_BOOT_IRQS

内核参数 docpci=ioapicreroute


EP - 端点框架 doc

从 shell 中查询信息

find /sys/kernel/config/pci_ep/


EPC - EP 控制器

linux/pci-epc.h inc pci_epc_create id, devm_pci_epc_create id

EPF - EP 功能

linux/pci-epf.h inc pci_epf_create id

内部结构: drivers/pci/endpoint/ src

测试端点功能的驱动程序: drivers/pci/endpoint/functions/pci-epf-test.c src

PCIe 虚拟化,SR-IOV doc, 2009

API: pci_enable_sriov id, pci_disable_sriov id, sriov_configure id

MSI - 消息信号中断 doc, 2008

MSI 示例

vectors = pci_alloc_irq_vectors id(pci_dev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_MSIX);
irq = pci_irq_vector id(pci_dev, 0);


AER - 高级错误报告 文档, 2006

API: linux/aer.h 包含文件, pci_enable_pcie_error_reporting 标识符, pci_disable_pcie_error_reporting 标识符, pci_aer_clear_nonfatal_status 标识符

ERS - 错误恢复系统 文档:

API: pci_error_handlers 标识符, pci_ers_result 标识符, pci_channel_state_t 标识符

PCIe - PCI Express 端口总线驱动程序 文档, 2004

API: pcie_port_service_driver 标识符,pcie_port_service_register 标识符, pcie_port_service_unregister 标识符


旧的 PCI API 手册 文档

pci_get_device 标识符, pci_get_class 标识符, pci_get_subsys 标识符, pci_dev_put 标识符


💾 历史记录

📚 参考资料

华夏公益教科书