Включение IOMMU в ядре для передачи видеокарты

Короткий вопрос:

Как я могу включить intel_iommu установка в ядре Linux? Я выполняю хост Debian, с помощью grub2 загрузчика. В документации, которую я видел, говорится для редактирования /boot/grub/menu.lst, который, кажется, важен только для личинки 1.x, поскольку у меня нет того файла.

Именно мое понимание (и последняя опция, о которой я могу думать) изменяющий этот параметр загрузки могло бы избавиться от следующего сообщения об ошибке в /var/log/kern.log

vboxpci: No IOMMU domain (attach)

Долгий вопрос:

Предоставление гостю прямого доступа ОС к видеокарте

Я недавно понял, что возможно пройти через специальное PCI устройство гостю рабочая ОС в Virtualbox. Прохладный, я думал! У меня есть два NVIDIA QUADRо видеокарты FX (с мостовым соединением SLI на месте, которое я надеюсь, не вызывает горе), и хотел бы выделить 2-ю видеокарту гостю ОС, так, чтобы я мог использовать функции OpenGL в Photoshop и др.

NVIDIA продает это "SLI мульти-ОС" конфигурация, которая является в основном, что я хотел настроить целую вечность, но я не хочу тратить по главному на программное обеспечение Virtualisation (Экстремальное значение рабочей станции параллелей), когда я использовал VirtualBox вполне счастливо уже много лет.

Хост-система

Я выполняю linux-3.5.0-19 из репозиториев Debian, на довольно высокопроизводительном оборудовании рабочей станции (Asus P6T7 Суперкомпьютер WS mobo w/чипсет Intel ICH10R и Xeon W3680 CPU) и хотел бы включить поддержку IOMMU в ядре, предпочтительно не имея необходимость компилировать его сам.

BIOS

В настройках BIOS у меня есть включенная поддержка VT-x и VT-d. Я ничего не мог видеть конкретно упоминающего IOMMU, все же.

Присоединение устройства PCI

Это было приятно удивительно просто! Официальная документация VirtualBox здесь. То, что я сделал, который я нашел менее неоднозначным, должно было открыться nvidia-settings, выберите вторичную видеокарту и отметьте идентификатор Шины ("PCI:5:0:0" в моем случае). Затем из командной строки хоста:-

VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0

(Когда я сначала выполнил это, была ошибка, потому что VirtualBox эмулировал чипсет PIIX; это сказало, что передача PCI только работает с чипсетами ICH9. Таким образом, я изменил Чипсет на ICH9 в Параметрах настройки системы VirtualBox VM и включил гостя для установки необходимых новых драйверов. Перезагрузка позже и все хорошо работало, таким образом, я закрыл гостя и повторно выполнил команду.)

Не было никакого вывода, и я был возвращен к командной строке почти сразу.

Используя хост GPU от гостя

Перед включением гостя я сначала перезагрузил хост-машину, в случае, если что-то недокументированное должно было произойти в ядре virtualbox-dkms. Поскольку я выполнил предыдущую команду без sudo полномочия, я сомневаюсь, что любые изменения были внесены, все же.

Когда я затем запустил гостя, Windows Update начал делать свою вещь и автоматически обнаружил и установил корректные драйверы NVIDIA. Весь взгляд хорошего до сих пор. Прежде чем я мог использовать устройство, хотя, я должен был перезагрузить гостя...

Проблема

Теперь, когда драйверы графической платы установлены на госте и присоединенном устройстве PCI, я не могу войти в рабочий стол Windows. Я добираюсь до экрана входа в систему Windows, затем после входа в систему, экранных замораживаний, просто говоря "Приветствие", с should-be-spinning-but-isn't синим кругом рядом с ним.

В /var/log/kern.log, последние распечатанные сообщения являются:-

vboxpci: vboxPciOsDevInit: dev=500
vboxpci: detected device: 10de:05ff at 05:00.0, driver pci-stub
vboxpci: vboxPciOsDevInit: dev=500 pdev=ffff88061bea0000
pci-stub 0000:05:00.0: irq 76 for MSI/MSI-X
vboxpci: enabled MSI
500: linux vboxPciOsDevGetRegionInfo: reg=0
got mmio region: fa000000:16777216
500: linux vboxPciOsDevGetRegionInfo: reg=1
got mmio region: d0000000:268435456
500: linux vboxPciOsDevGetRegionInfo: reg=3
got mmio region: f8000000:33554432
500: linux vboxPciOsDevGetRegionInfo: reg=5
got pio region: 8c00:128
500: linux vboxPciOsDevGetRegionInfo: reg=6
got mmio region: fb980000:524288
got PCI IRQ: 76
device eth0 entered promiscuous mode
power state: 0
vboxpci: No IOMMU domain (attach)

Какая-либо идея, как зафиксировать это?

ОБНОВЛЕНИЕ:

У меня есть ядро, загружающееся теперь с intel_iommu=on, но вещи все еще не работают полностью.. После перезагрузки хоста, гость запускает, входит в систему хорошо, и все кажется, поскольку это прежде запускало любое из этого. Моя 2-я видеокарта ничего не производит.

В Диспетчере устройств существует восклицательный знак рядом с устройством Quadro FX, и существует код ошибки 12 в свойствах устройства с сообщением, говоря, что "Это устройство не может найти достаточно бесплатных ресурсов". Дальнейшее описание на technet.microsoft.com.

В журнале ядра хоста это смотрит многообещающий:-

vboxpci: detected device: 10de:05ff at 05:00.0, driver pci-stub
vboxpci: vboxPciOsDevInit: dev=500 pdev=ffff88061baa0000
pci-stub 0000:05:00.0: irq 76 for MSI/MSI-X
vboxpci: enabled MSI
500: linux vboxPciOsDevGetRegionInfo: reg=0
got mmio region: fa000000:16777216
500: linux vboxPciOsDevGetRegionInfo: reg=1
got mmio region: d0000000:268435456
500: linux vboxPciOsDevGetRegionInfo: reg=3
got mmio region: f8000000:33554432
500: linux vboxPciOsDevGetRegionInfo: reg=5
got pio region: 8c00:128
500: linux vboxPciOsDevGetRegionInfo: reg=6
got mmio region: fb980000:524288
got PCI IRQ: 76
created IOMMU domain ffff88058377c9a0
device eth0 entered promiscuous mode
power state: 0
vboxpci: iommu_attach_device() success

Если я запускаю гостя ОС во второй раз, не перезагружая хост, дисплей замораживается снова на "Желанном" этапе. Это определенно заканчивает этап входа в систему, хотя, поскольку я мог использовать ярлыки окон для завершения работу машины, не вызывая завершение работы..

Теперь я отчасти вне идей... Какие-либо предложения для получения этой работы? Еще информация я могу обеспечить?

UPDATE2:

dmesg содержит некоторые более интересные ошибки, но я не знаю то, что я могу сделать о них:

IOMMU 0 0xfbfff000: using Queued invalidation
IOMMU 1 0xfbffe000: using Queued invalidation
------------[ cut here ]------------
WARNING: at /build/buildd/linux-3.5.0/drivers/iommu/intel-iommu.c:4254 init_dmars+0x39b/0x74f()
Hardware name: System Product Name

Your BIOS is broken; DMA routed to ISOCH DMAR unit but no TLB space.

BIOS vendor: American Megatrends Inc.; Ver: 0811   ; Product Version: System Version
...
Your BIOS is broken; RMRR ends before it starts!
16
26.11.2012, 20:31
1 ответ

Если Ваш драйвер Nvidia говорит, что не мог бы найти достаточно бесплатных ресурсов, попытаться отключить эмулированный "Стандарт Адаптер VGA" в Диспетчере устройств. Перезагрузите гостя, и можно найти, что следующее происходит в порядке:

1) Ваш POST/начальная загрузка VM происходит на эмулированном адаптере VGA. 2) Эмулированный адаптер VGA идет пробел непосредственно перед тем, как это добирается до экрана 3 входа в систему), драйвер Nvidia загружается и поднимает передачу GPU, и Вы получаете экран входа в систему на карте Nvidia.

С небольшим количеством удачи Вы могли бы найти, что вещи хорошо работают оттуда на. Это более или менее точно, что происходит на моей подобной установке с Xen. Действительно сообщите о результатах.:)

0
27.01.2020, 19:49

Теги

Похожие вопросы