为什么Linux内核3.14和4.9 PCI设备命名之间的位置发生了变化?

时间:2017-01-20 12:03:41

标签: linux-kernel linux-device-driver

我的设备有两个连接到PCIe的xilinx PCI卡,设备架构是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设备命名之间的差异已经改变了?对于这两个内核,我们有相同的硬件,dtb设备树和其他所有常见内容。

2 个答案:

答案 0 :(得分:0)

我认为您的系统上还有其他PCI设备。确实如此,在这两个内核之间输出lspci的情况下,您是否看到与其他PCI设备的区别?

拉米罗森

答案 1 :(得分:0)

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