(1)、DL Interactive:物理层通知数据链路层当前PCIe链路不可用,此时PCIe链路的对端可能未连接设备或未检测到对端设备。 复位后,数据链路层控制和管理状态机(Data Link Layer Controland manage State Macheine)进入该状态,只有传统复位(cold、warm、hot reset)才能使DLCMSM进入DL INIT状态。FLR方式不会影响DLCMSM状态...
一、PCIe总线的数据链路层的状态 1、DL_Inactive状态 2、DL_Init 状态 3、DL_Active 状态 本节内容 一、PCIe总线的数据链路层的状态 数据链路层通过物理层来监控PCle链路的状态,并维护数据链路层的“控制与管理状态机”( Data Link Control and Management State Machine,DLCMSM)。 DLCMSM状态机的状态迁移,包括...
ffffffffb02b8d08 t __initcall_pcibus_class_init2ffffffffb02b8d10 t __initcall_pci_driver_init2ffffffffb02b8e10 t __initcall_acpi_pci_init3ffffffffb02b8e30 t __initcall_register_xen_pci_notifier3ffffffffb02b8e58 t __initcall_pci_arch_init3ffffffffb02b9020 t __initcall_pci_slot_init4...
hi3559 pcie控制器驱动程序入口为: \Hi3559AV100_SDK_V2.0.3.0\package\osdrv\opensource\kernel\linux-4.9.y\drivers\pci\hipcie\pcie.c 下面分析一下pcie_init的流程: pcie_init -->pci_create_root_bus //创建代表pcie控制器的pci_host_bridge和第一条pci总线,driver/pci/probe.c -->pci_scan_child_b...
InitFC1-P/NP/Cpl:接收端设备使用此消息向发送端发起初始化流量控制的流程,并初始化信用额度,这是第一步。这个消息有接收端发起的原因是因为,不同的接收端能力不同,所以应该由接收端根据自己的能力,比如缓存的大小,来决定信用额度的大小。 InitFC2-P/NP/Cpl:用于发送端向接收端确认InitFC1的消息,这是第二步...
FC_INIT2:数据链路层向事务层提交DL_UP信息。 (3)、DL Active:物理层通知数据链路层当前PCIe链路正常,此时物理层已经训练或重训练完毕。 此外,数据链路层还会向事务层TL通知以下状态: (1)、DL Down:数据链路层通知事务层当前PCIe链路对端未检测到其他设备,当数据链路层处于DL Inactive状态时,该状态位有效。
为了访问PCI-E扩展配置空间,pci_access_init()函数会调用pci_mmcfg_init()。于是将raw_pci_ops的值设为pci_mmcfg,代码都在文件arch/i386/pci/mmconfig.c中。 00152: void__initpci_mmcfg_init(void) 00153: { ... ... 00173:raw_pci_ops= &pci_mmcfg; ...
pci_init(pacc); pci_scan_bus(pacc); for (dev = pacc->devices; dev; dev = dev->next) { pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS); name = pci_lookup_name(pacc, namebuf, sizeof(namebuf), PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE, ...
pci_arch_init /* 判断host/pci桥的类型 */ pci_direct_probe pci_check_type1 pci_sanity_check pci_direct_init raw_pci_ops = &pci_direct_conf1; raw_pci_ext_ops = &pci_direct_conf1; /* 第二个过程,枚举各级总线上的设备 */ pci_subsys_init pci_legacy_init pcibios_scan_root pci_...
pci_driver_init(): 注册pci_bus_type, 完成后创建了/sys/bus/pci目录。 acpi_pci_init(): 注册acpi_pci_bus, 并设置电源管理相应的操作。 acpi_init(): apci启动所涉及到的初始化流程,PCIe基于acpi的启动流程从该接口进入。 在linux/Documentation/acpi/namespace.txt中定义了acpi解析的流程 ...