为什么在 linux 内核 3.14 和 4.9 之间的某个地方,PCI 设备的命名发生了变化



我有两台 Xilinx PCI 卡连接到 PCIe 的设备,设备架构是 PowerPC。我可以通过在/boot 目录中创建符号链接来切换内核版本。

在 3.14 内核 lspci 上产生:

0000:00:00.0 Class 0604: Device 1957:0070 (rev 21)
0000:01:00.0 Class 0200: Device 1234:0045 (rev 78)
0001:02:00.0 Class 0604: Device 1957:0070 (rev 21)
0001:03:00.0 Class 0200: Device 1234:0100 (rev 63)

在 4.9 内核 lspci 上产生:

9000:00:00.0 Class 0604: Device 1957:0070 (rev 21)
9000:01:00.0 Class 0200: Device 1234:0045 (rev 78)
a000:02:00.0 Class 0604: Device 1957:0070 (rev 21)
a000:03:00.0 Class 0200: Device 1234:0100 (rev 63)

LSPCI 输出对应于/sys/bus/pci/devices/目录内容。我的问题是为什么内核 3.14 和 4.9 pci 设备命名之间的 somwehere 发生了变化?对于这两个内核,我们都有相同的硬件,dtb设备树和其他所有常见的内容。

我假设您的系统上还有其他PCI设备。如果确实如此,您是否看到在这两个内核之间的 lspci 输出方面与其他 PCI 设备的差异?

拉米·罗森

重新做我的评论作为答案,因为他们没有回应我的评论。 问题是为什么在 Linux 3.19 中报告的 PCI ID 的域部分为 0 和 1,在 Linux 4.9 中0x9000和0xa000。 Linux 4.7 中的 Commit 63a72284 将分配给域的值更改为基于设备树信息的可预测值,而不是从 0 开始的连续数字。 我认为这是一个安全的假设,即此提交是更改的原因。

最新更新