Grafik kartı geçişi için çekirdekte IOMMU'yu etkinleştirme


16

Kısa soru:

intel_iommuLinux çekirdeğindeki ayarı nasıl açabilirim ? Grub2 önyükleyicisini kullanarak bir Debian ana bilgisayarı çalıştırıyorum. Gördüğüm belgelerin /boot/grub/menu.lst, o dosyaya sahip olmadığım için yalnızca grub 1.x ile alakalı gibi göründüğü bir düzenleme yapıldığını söylüyor .

Bu önyükleme seçeneğini değiştirdiğinizde aşağıdaki hata mesajından kurtulabileceğini anlamak (ve düşünebileceğim son seçenek) /var/log/kern.log

vboxpci: No IOMMU domain (attach)

Uzun soru:

Konuk işletim sistemine grafik kartına doğrudan erişim verme

Geçenlerde bir PCI-express cihazdan Virtualbox'ta çalışan konuk işletim sistemlerine geçmenin mümkün olduğunu fark ettim. Harika, diye düşündüm! İki NVIDIA Quadro FX grafik kartım var (SLI köprü bağlantısı yerinde, kedere neden olmadığını umuyorum) ve 2. grafik kartını konuk işletim sistemine adamak istiyorum, böylece OpenGL özelliklerini kullanabiliyorum Photoshop ve diğ.

NVIDIA, bu " SLI Multi-OS " konfigürasyonunu pazarlıyor , bu da temel olarak çağlar boyunca kurmak istediğim şeydi, ancak sanallaştırma yazılımına (Parallels iş istasyonu aşırı), VirtualBox'ı yıllardır mutlu bir şekilde kullanıyor.

Sunucu sistemi

Debian depolarından linux-3.5.0-19 kullanıyorum, oldukça üst düzey iş istasyonu ekipmanlarında (Intel ICH10R yonga seti ve Xeon W3680 CPU ile Asus P6T7 WS Süper Bilgisayar mobo) ve çekirdekteki IOMMU desteğini açmak istiyorum , tercihen kendim derlemek zorunda kalmadan.

BIOS

BIOS ayarlarında, VT-x ve VT-d desteğini etkinleştirdim. Yine de IOMMU'dan özellikle bahseden bir şey göremedim.

PCI aygıtını takma

Bu hoş şaşırtıcı derecede basitti! Resmi VirtualBox belgeleri burada . Daha az belirsiz bulduğum şey, açmak nvidia-settings, ikincil grafik kartını seçmek ve Bus Kimliğini not etmekti (benim durumumda "PCI: 5: 0: 0"). Ardından, ana bilgisayarın komut satırından: -

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

(Bunu ilk çalıştırdığımda, VirtualBox bir PIIX yonga setini taklit ettiği için bir hata oluştu; PCI geçişinin yalnızca ICH9 yonga setleriyle çalıştığını söyledi. Bu nedenle, ChipBox'ı VirtualBox VM Sistemi ayarlarında ICH9 olarak değiştirdim ve konuku açtım Daha sonra yeniden başlatın ve her şey iyi çalışıyordu, bu yüzden konuğu kapattım ve komutu yeniden çalıştırdım.)

Çıktı yoktu ve hemen komut satırına geri döndüm.

Misafirin ana bilgisayar GPU'sunu kullanma

Konuğu açmadan önce, çekirdeğinde belgelenmemiş bir şeyin olması gerektiğinde, sanal makine-dkms tarafından ana bilgisayar makinesini yeniden başlattım. Önceki komutu sudoayrıcalıksız çalıştırdığımda, herhangi bir değişiklik yapıldığından şüpheliyim.

Bir sonraki konuk başladığımda, Windows Update işini yapmaya başladı ve otomatik olarak doğru NVIDIA sürücülerini algılayıp yükledi. Hepsi şimdiye kadar iyi görünüyor. Cihazı kullanmadan önce konuğu yeniden başlatmak zorunda kaldım ...

Sorun

Grafik kartı sürücüleri misafire ve bağlı PCI aygıtına yüklendiğine göre, Windows masaüstüne giremiyorum. Windows oturum açma ekranına geliyorum, sonra giriş yaptıktan sonra, ekran "" Hoş Geldiniz "diyerek donuyor, yanında mavi bir daire olmamalı.

İçinde /var/log/kern.log, yazdırılan son mesajlar: -

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)

Bunu nasıl düzeltebileceğine dair bir fikrin var mı?

GÜNCELLEME:

Ben şimdi ile önyükleme çekirdeği var intel_iommu=on, ama işler hala tam çalışmıyor .. Ana bilgisayar yeniden başlatıldıktan sonra, konuk başlar, günlükleri tamam ve her şey bu başlamadan önce olduğu gibi görünüyor. 2. ekran kartım hiçbir şey çıkarmıyor.

Aygıt Yöneticisi'nde, Quadro FX aygıtının yanında bir ünlem işareti vardır ve aygıt özelliklerinde "Bu aygıt yeterli boş kaynak bulamıyor" iletisini içeren 12 hata kodu vardır. Technet.microsoft.com hakkında daha fazla açıklama .

Ana çekirdek günlüğünde, umut verici görünüyor: -

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

Konuk işletim sistemini ikinci kez başlatırsam, ana bilgisayarı yeniden başlatmadan ekran "Hoş Geldiniz" aşamasında tekrar donar. Kesinlikle giriş aşamasını bitirir, çünkü makineyi kapatmaya zorlamak için windows kısayollarını kullanabilirim.

Şimdi biraz fikrim yok ... Çalıştırmak için herhangi bir öneriniz var mı? Daha fazla bilgi verebilir miyim?

Update2:

dmesg daha ilginç hatalar içeriyor, ancak onlar hakkında ne yapabileceğimi bilmiyorum:

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!

1
Donanım destekliyorsa, IOMMU ayarı Debian ahırında varsayılan olarak etkin olmalıdır. Günlükte sorun ve tonlarca hataya neden olduğundan, devre dışı bırakmak zorunda kaldım intel_iommu=soft. Geçmeyi deneyebilirsiniz intel_iommu=on.
Marco

1
Güzel, sadece bunu değiştirmek için dosyayı ve satırı buldu; KDE'nin grub-config modülü devreye CONFIG_CMDLINE_LINUX=intel_iommu=ongirdi /etc/default/grub. Şimdi konuk önyükleme yapıyor, ancak ekran kartını algılamıyor ...
Alex Leach

intel_iommu=softGeçerli bir çekirdek seçeneği gibi görünüyor ve bunu kullanıldığında, bu geri intikal etmez intel_iommu=on.. Gönderen www.kernel.org , sahip olabilir iommu=soft.., ama bunun için herhangi bir belge olabilir biliyor musunuz neyi bunu yapar?
Alex Leach

3
Haklısın, öyle iommu=soft. Donanım IOMMU'yu devre dışı bırakır (sistemimde çok sayıda DMA hatasına neden olur) ve bunun yerine bir yazılım IOMMU kullanır. İşte eski bir iş parçacığının bağlantısı: Tüm çekirdek paketleri için iommu = soft kullanma önerisi
Marco

Teşekkürler. Bir dahaki sefere yeniden başlattığımda bir şans verebilirim. Tüm donanımımın IOMMU'yu desteklediğini düşünüyorum, bu yüzden bir yazılım öykünmesinin iyi bir fikir olup olmayacağından emin değilim. İlgili bir notta, GPU'mun DMAR birimi olup olmadığından ve kullanmak için iyi bir fikir olup olmayacağından emin değilim intel_iommu=igfx_off...
Alex Leach

Yanıtlar:


2

Vfio-vga ile hipervizör olarak KVM kullanan bir NVIDIA GTX 760 ile çalışan VGA geçidi var; Virtualbox ile hiç denemedim. Bu bir acıydı, ancak yapılandırmayı doğru yaptıktan sonra iyi çalışıyor. KVM, masaüstünüzdeki hızlı VM'ler için Virtualbox kadar uygundur ve başka bir seçenek olarak düşünebilirsiniz.

Bu ileti dizisinde birçok farklı yapılandırma ve sorun giderme adımı hakkında tonlarca bilgi var ve gerçekten yardımcı oldu: https://bbs.archlinux.org/viewtopic.php?id=162768


1
CUDA çalışıyor mu?
Aleksandr Dubinsky

Bu blog artık güncelliğini yitirmiş iddia ve tavsiye vfio.blogspot.com
Aleksandr Dubinsky

Soğuk yerden verimli bir KVM + qemu kurmak o kadar hızlı olmayabilir.
sitilge

@AleksandrDubinsky, Şu anda CUDA'nın çalışması için belirli bir Linux çekirdeği kullanılmalıdır: superuser.com/a/1392031/109803
Gabriel Fair

0

Nvidia sürücünüz yeterli boş kaynak bulamadığını söylüyorsa, Aygıt Yöneticisi'nde benzetilmiş "Standart VGA Adaptörü" nü devre dışı bırakmayı deneyin. Konuğu yeniden başlatın ve sırayla aşağıdakilerin gerçekleştiğini görebilirsiniz:

1) VM POST / önyüklemeniz taklit VGA adaptöründe gerçekleşir. 2) Öykünülen VGA adaptörü giriş ekranına gelmeden hemen önce boşalır 3) Nvidia sürücüsü, geçişli GPU'yu yükler ve getirir ve Nvidia kartında giriş ekranını alırsınız.

Biraz şansla, işlerin oradan işe yaradığını görebilirsiniz. Bu, Xen ile benzer kurulumumda az çok. Lütfen sonuçları bildirin. :)


0

İki ayrı sorununuz var gibi görünüyor. VGA geçişi ile çalışmak için yeniden başlatma gerçek bir ayı olabilir. Xen'de, VGA cihazı genellikle çıkarılabilir bir cihaz olarak görünür ve bazı insanlar yeniden başlatmadan önce cihazı "çıkarmada" daha iyi şansa sahiptir.

Kod 12 hatası, muhtemelen Windows aygıt yöneticisindeki sanal video aygıtının devre dışı bırakılmasıyla düzeltilebilir.


0

Şunlardan birini ayarlamayı deneyin /etc/grub:

  • iommu=memmaper
  • iommu=soft
  • vga=normal
  • vesa=0

Yeni AMD 64bit sistemim var ve Linux'un BIOS'taki iommu ayarlarının neden olduğu Nvidia ve DMA ayarında sorun yaşadığını buldum, bu yüzden bunları gruba ayarlamak benim için düzeltildi.

Daha fazla ayrıntı için bunu okuyun .


-1

"IOMMU bulundu" iletisini görmek için HP dc7900 üzerinde test edilmiştir:

entegre videoyu devre dışı bırak

iommu=calgary intel_iommu=on intel_iommu=igfx_off
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.