Kvm-Virtualization

PCI 設備的 ID 指的是什麼,哪些與設置直通相關?

  • February 6, 2019

在使用 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 所暗示的那樣,後者是十六進制。

引用自:https://serverfault.com/questions/952565