我正在编写一个支持多种设备的 Linux 设备驱动程序。我有一个 x8 PCIe 卡,上面有 4 个这样的设备。每个都通过一个 PCIe 交换机运行并获得 2 个 PCIe channel 。有没有办法让司机同时写入多个车道?如果是这样,我该怎么做?我认为这应该是可能的,因为它都在一个 PCIe 插槽上,但我不知道如何从驱动程序中完成。
最佳答案
PCIe 并不像您想象的那样工作。交换机不会将上游 x8 链路划分为多个 x2 链路——它只是将流量从一个链路转发到另一个链路。因此,您将看到到交换机的 x8 链路,然后是从交换机到下游设备的 4 x2 链路。然而,对于不同的交换机和不同的下游设备,同样可能(例如)到处都有 x8 链路,即从根端口到交换机的 x8 链路和从交换机到下游设备的 x8 链路。
但是,在您的情况下,交换机两侧的带宽量相匹配,因此设备竞争有限的带宽量应该没有问题。您的驱动程序可以像存在独立链接一样高效地同时与所有设备通信。
关于linux - 是否可以写入在同一个 PCIe 插槽上使用不同 PCIe channel 的多个设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414798/