Графические процессоры PCI имеют одинаковые идентификаторы устройств. Зачем?

У меня в системе установлено два R9 280. В Ubuntu, когда я бегу lspci -nn обе карты имеют одинаковый идентификатор устройства.

Пример вывода:

01:00.0 Example GPU 1 [8080:aa68]
04:00.0 Example GPU 2 [8080:aa68]

Обратите внимание, идентификаторы устройства "8080:aa68" совпадают. Итак, мой вопрос: почему идентификаторы одинаковы? Я пытаюсь передать одну из карт в KVM, но обе проходят, потому что идентификаторы одинаковы. Так что я мог сделать, чтобы решить это?

Обновление 1: я пробовал setpci -s 04:00.0 02.w=aa69 он ничего не делает, идентификатор устройства остается прежним. Я тоже пробовал echo "8086 10f5" > /sys/bus/pci/drivers/radeon/new_id но он говорит, что файл существует.

Обновление 2: если я сделаю это echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind тогда моя система зависает

1 ответ

Потому что это одно и то же оборудование, поэтому оно будет показывать один и тот же идентификатор поставщика и один и тот же идентификатор устройства Единственная разница между двумя картами - это слот, в котором он находится (вероятно, первая часть вашего выхода).

Ты можешь использовать dmidecode –t slot чтобы сопоставить его с выводом из lspci -nn идентифицировать их каждого, но вы не можете сказать, что KVM.

Интересный вопрос, хотя и вообще я бы оставил его на "вам, вероятно, нужна другая, другая карта", когда я наткнулся на это:

На kernel.org написано, что "Запись идентификатора устройства в /sys/bus/pci/drivers/.../new_id будет пытаться динамически добавить новый идентификатор устройства в драйвер устройства PCI. Это может позволить драйверу поддерживать больше оборудования, чем было включено в таблицу поддержки идентификатора статического устройства драйвера во время компиляции. Формат идентификатора устройства: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. Это идентификатор поставщика, идентификатор устройства, идентификатор поставщика подсистемы, идентификатор устройства подсистемы, класс, маска класса и данные частного драйвера. Поля Vendor ID и Device ID являются обязательными, остальные являются необязательными. После успешного добавления идентификатора драйвер проверит устройство и попытается привязаться к нему. Например: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id"

И это привело меня к команде setpci и раздел U&L, в котором предлагается изменить идентификатор устройства карт PCI.

Так что, возможно, вы можете изменить один из 8080:aa68 на другой идентификатор устройства с помощью одного из этих двух методов. Выберите идентификатор, который похож на карту, но может быть немного старше или новее той, что у вас есть. Изменение его на случайный идентификатор устройства, вероятно, вызовет проблемы.

Другие вопросы по тегам