Назад | Перейти на главную страницу

К чему относятся идентификаторы устройств PCI и какие из них важны для настройки сквозной передачи?

Создавая домен с помощью virsh, я всегда предполагал, что «слот» PCI-карты относится к тому слоту на материнской плате, в котором она находится. Однако, похоже, это не два случая, карты в двух разных физических слотах назначаются в тот же "слот" по virsh. Первые два устройства являются частью GTX 1070, третье - USB-карта Sonnet PCI.

Кроме того, что это за два разных идентификатора шины? Идентификатор автобуса первого - 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 от набора микросхем материнской платы, к которой подключены устройства. Это может быть или не быть через реальные слоты на плате; например, встроенные порты Ethernet находятся на отдельной шине от слотов расширения, которые принимают вашу видеокарту.

«Слот» относится к пространству на шине PCI, к которому подключено одно физическое устройство, которое электрически отличается от других «слотов» на этой шине. Например, два разных USB-контроллера, занимающих два разных слота. Или ваша видеокарта занимает другой слот, чем RAID-HBA.

Обратите внимание: хотя вы спрашивали о двух разных физических устройствах, использующих один и тот же слот, ничто из того, что вы опубликовали в своем вопросе, не демонстрирует, что это происходит. Действительно, этого не происходит. Слоты физически являются частью шины, и слот 0 на одной шине отличается от слота 0 на другой шине.

«Функция» относится к подмножеству физического устройства, которое обеспечивает различные функции. Например, встроенное устройство Ethernet имеет отдельные функции для каждого физического порта Ethernet. Ваша видеокарта имеет отдельные функции для видеоконтроллера и аудиоустройства.

Что касается сквозной передачи, одна шина / слот / функция идентифицирует устройство или его часть, которые могут передаваться отдельно на виртуальную машину.

Наконец, 67 и 43 - это одно и то же число. Первый является десятичным, и, как следует из того, что он отображается как 0x43, последний является шестнадцатеричным.