声明:
- 🔥文章目的在于学习记录,知识分享。因个人能力有限:如有错误之处,请帮忙指出;如有疑问,欢迎随时交流。
- 🔥感谢“点评赞”,期待大家提出问题进行深度讨论。
内容如涉及侵权,请及时联系我删除。
概要
在系统初始化阶段,一直疑惑PCIe的枚举到底需要几次?BIOS/UEFI和OS(Linux/Windows)是否都要做,是否都必须做,为什么必须做?
先说结论:必须要做,因为每个阶段的目的不一样。
BIOS/UEFI阶段
BIOS/UEFI阶段执行枚举的主要目的是从硬件的角度实现PCIe设备的扫描和硬件属性的扫描,包括mem空间的分配等。
这个阶段属于硬件扫描过程,需要保证将可用的设备扫描出来,并确认相关Cap(类似MSI/MSIX/Link width&Speed/SRIOV等特性),并且通过相关程序实现资源分配。
OS阶段
OS阶段主要是软件行为,目的是实现驱动加载的过程。主要通过获取设备的vendor ID、Device ID 、Subsystem ID等信息,执行相关软件的加载和初始化动作,给后续使用提供基础。
总结
PCIe的枚举在BIOS/UEFI和OS阶段都要执行,且目的不一样。一个着重于硬件背景,一个着重于软件背景。
参考文献
本文完,感谢大家阅读!