我们看一下超时函数的实现,不管是用wait_event还是用poll_cmd方式来超时,逻辑不影响,那么就以 pcie_poll_cmd为例: static int pcie_poll_cmd(struct controller *ctrl, int timeout) { struct pci_dev *pdev = ctrl_dev(ctrl); u16 slot_status; do { pcie_capability_read_word(pdev, PCI_EXP_SLTSTA,...
函数首先通过pci_find_capability查找类型为PCI_CAP_ID_VNDR(0x9)的capability bar位置,这是PCI规范中定义的扩展capability类型,在查找前首先确定capability在配置空间的位置入口,检查PCI设备是否实现capabilty,如果实现了,是普通设备或者pci桥,它在配置空间偏移0x34的地方,如果是Card Bus,它在配置空间偏移0x14的地方,找...
现在协议规定的Capabilities ID有下列特性: 3、PCIE Capabilities List(100 – FFF)的组织方法: 100-FFF区域用来实现PCIE独有可选的PCI特性,也都是使用Capabilities List的形式来组织的,只是具体的Capbalities Struct结构有些扩展。 4、实例: 以系统A的PCIE配置空间为例来说明Capabilities List的组织方法: 5、参考资...
函数首先通过pci_find_capability查找类型为PCI_CAP_ID_VNDR(0x9)的capability bar位置,这是PCI规范中定义的扩展capability类型,在查找前首先确定capability在配置空间的位置入口,检查PCI设备是否实现capabilty,如果实现了,是普通设备或者pci桥,它在配置空间偏移0x34的地方,如果是Card Bus,它在配置空间偏移0x14的地方,找...
PCIe PASID capability ID is equal to 0x1B (PCI_EXT_CAP_ID_PASID). 1)在虚拟化场景下,直通设备的中断是无法直接投递到Guest中的,而是由IOMMU截获中断,先将其中断映射到host的某个中断上,然后再重定向(由VMM写VMCS寄存器中的32 bits VM-entry interruption-information字段)到Guest内部。 2)IOMMU IRTE(Inte...
pci_indirect.c文件存放对PCI设备的配置空间中寄存器进行读写操作的函数。 cmd_pci.c文件是存放pci查看指令函数的文件,用户通过shell输入相关指令来查看PCIe设备信息。 PCI配置相关文件: fsl_law.c文件用来设置LAW的文件,在PCIe配置时需要设置LAW,之前要进行law初始化,查看law的使用情况进行相关标志编号等。
Message Control字段,该字段存放当前PCIe设备使用MSI-X机制进行中断请求的状态与控制信息,如表6‑2所示。 表6‑2MSI-X Capability结构的Message Control字段 Table BIR(BAR Indicator Register)。该字段存放MSI-X Table所在的位置,PCIe总线规范规定MSI-X Table存放在设备的BAR空间中。该字段表示设备使用BAR0~5寄存...
unsignedintclass;/*3 bytes: (base,sub,prog-if)*/u8 revision;/*PCI revision, low byte of class word*/u8 hdr_type;/*PCI header type (`multi' flag masked out)*/u8 pcie_cap;/*PCI-E capability offset*/u8 msi_cap;/*MSI capability offset*/u8 msix_cap;/*MSI-X capability offset*/u8...
u8 msix_cap;/* MSI-X capability offset */ u8 pcie_mpss:3;/* PCI-E Max Payload Size Supported */ u8 rom_base_reg;/* which config register controls the ROM */ u8 pin;/* which interrupt pin this device uses */ u16 pcie_flags_reg;/* cached PCI-E Capabilities Register */ ...