在使用 virsh 设置域时,我一直认为 PCI 卡的“插槽”是指它所在的主板上的哪个插槽。但是,情况似乎并非如此,而是分配了两个不同物理插槽中的卡virsh 到同一个“槽”。前两个设备是 GTX 1070 的一部分,第三个是 Sonnet PCI USB 卡。
另外,这两个不同的总线 ID 是什么?第一个的bus ID是67还是43?
~$ virsh nodedev-dumpxml pci_0000_43_00_0
<device>
<name>pci_0000_43_00_0</name>
<path>/sys/devices/pci0000:40/0000:40:01.3/0000:43:00.0</path>
<parent>pci_0000_40_01_3</parent>
<driver>
<name>nouveau</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>67</bus>
<slot>0</slot>
<function>0</function>
<product id='0x1b81'>GP104 [GeForce GTX 1070]</product>
<vendor id='0x10de'>NVIDIA Corporation</vendor>
<iommuGroup number='39'>
<address domain='0x0000' bus='0x43' slot='0x00' function='0x0'/>
<address domain='0x0000' bus='0x43' slot='0x00' function='0x1'/>
</iommuGroup>
<pci-express>
<link validity='cap' port='0' speed='8' width='16'/>
<link validity='sta' speed='2.5' width='8'/>
</pci-express>
</capability>
</device>
~$ virsh nodedev-dumpxml pci_0000_43_00_1
<device>
<name>pci_0000_43_00_1</name>
<path>/sys/devices/pci0000:40/0000:40:01.3/0000:43:00.1</path>
<parent>pci_0000_40_01_3</parent>
<driver>
<name>snd_hda_intel</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>67</bus>
<slot>0</slot>
<function>1</function>
<product id='0x10f0'>GP104 High Definition Audio Controller</product>
<vendor id='0x10de'>NVIDIA Corporation</vendor>
<iommuGroup number='39'>
<address domain='0x0000' bus='0x43' slot='0x00' function='0x0'/>
<address domain='0x0000' bus='0x43' slot='0x00' function='0x1'/>
</iommuGroup>
<pci-express>
<link validity='cap' port='0' speed='8' width='16'/>
<link validity='sta' speed='2.5' width='8'/>
</pci-express>
</capability>
</device>
~$ virsh nodedev-dumpxml pci_0000_0a_00_0
<device>
<name>pci_0000_0a_00_0</name>
<path>/sys/devices/pci0000:00/0000:00:03.1/0000:0a:00.0</path>
<parent>pci_0000_00_03_1</parent>
<driver>
<name>xhci_hcd</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>10</bus>
<slot>0</slot>
<function>0</function>
<product id='0x1242'>ASM1142 USB 3.1 Host Controller</product>
<vendor id='0x1b21'>ASMedia Technology Inc.</vendor>
<iommuGroup number='18'>
<address domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/>
</iommuGroup>
<numa node='0'/>
<pci-express>
<link validity='cap' port='1' speed='5' width='2'/>
<link validity='sta' speed='5' width='2'/>
</pci-express>
</capability>
</device>
“总线”是指来自主板芯片组的 PCI/PCI-X/PCI express 总线,设备连接到该总线。这可能是也可能不是通过板上的实际插槽;例如,板载以太网端口与接受视频卡的扩展槽位于单独的总线上。
“插槽”是指 PCI 总线上连接单个物理设备的空间,它在电气上与该总线上的其他“插槽”不同。例如,两个不同的 USB 控制器占用两个不同的插槽。或者您的显卡占用了与 RAID HBA 不同的插槽。
请注意,虽然您询问了使用同一插槽的两个不同的物理设备,但您在问题中发布的任何内容都没有证明这种情况正在发生。确实,它不会发生。插槽在物理上是总线的一部分,一条总线上的插槽 0 与另一条总线上的插槽 0 不同。
“功能”是指提供不同功能的物理设备的子集。例如,板载以太网设备对每个物理以太网端口都有单独的功能。您的视频卡具有独立的视频控制器和音频设备功能。
关于直通,单个总线/插槽/功能标识设备或其一部分,可以单独地直通到 VM。
最后,67 和 43 是同一个数字。前者是十进制,正如它显示为 0x43 所暗示的那样,后者是十六进制。