짧은 질문 :
intel_iommu
Linux 커널에서 설정을 켜려면 어떻게 해야합니까? grub2 부트 로더를 사용하여 데비안 호스트를 실행합니다. 내가 본 문서는 edit이라고 말하는데 /boot/grub/menu.lst
grub 1.x에만 해당되는 것으로 보입니다. 파일이 없기 때문입니다.
이 부팅 옵션을 변경하면 다음과 같은 오류 메시지가 사라질 수 있다는 것을 이해하고 있습니다. /var/log/kern.log
vboxpci: No IOMMU domain (attach)
긴 질문 :
게스트 OS에 그래픽 카드에 대한 직접 액세스 권한 부여
최근에 PCI-express 장치를 통해 Virtualbox에서 실행되는 게스트 OS로 전달할 수 있다는 것을 깨달았습니다. 쿨, 나는 생각했다! 2 개의 NVIDIA Quadro FX 그래픽 카드 (SLI 브리지 연결을 통해 슬픔을 일으키지 않기로 함)가 있고 두 번째 그래픽 카드를 게스트 OS 전용으로 사용하여 OpenGL 기능을 사용할 수 있습니다 Photoshop et al.
엔비디아는이 " SLI Multi-OS "구성을 시장에 내놓았습니다. 기본적으로 몇 년 동안 설정하고 싶었지만 가상화 소프트웨어 (병렬 워크 스테이션 익스트림)에 대한 비용을 지출하고 싶지는 않습니다. 몇 년 동안 VirtualBox를 아주 행복하게 사용하고 있습니다.
호스트 시스템
필자는 고급 워크 스테이션 장비 (Intel ICH10R 칩셋 및 Xeon W3680 CPU를 갖춘 Asus P6T7 WS Supercomputer mobo)에서 데비안 리포지토리에서 linux-3.5.0-19를 실행 중이며 커널에서 IOMMU 지원을 켜고 싶습니다. 바람직하게 직접 컴파일하지 않아도됩니다.
BIOS
BIOS 설정에서 VT-x 및 VT-d 지원이 활성화되었습니다. 그래도 IOMMU를 구체적으로 언급하는 것을 볼 수 없었습니다.
PCI 장치 연결
이것은 유쾌하게 놀랍도록 간단했습니다! 공식 VirtualBox 설명서는 여기에 있습니다 . 내가 애매하게 찾은 것은 열어서 nvidia-settings
보조 그래픽 카드를 선택하고 버스 ID (내 경우에는 "PCI : 5 : 0 : 0")를 기록하는 것이 었습니다. 그런 다음 호스트의 명령 행에서 :-
VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0
(처음 실행했을 때 VirtualBox가 PIIX 칩셋을 에뮬레이트했기 때문에 오류가 발생했습니다 .PCI 통과는 ICH9 칩셋에서만 작동한다고 말했기 때문에 VirtualBox VM 시스템 설정에서 칩셋을 ICH9로 변경하고 게스트를 켰습니다. 나중에 재부팅하고 모든 것이 제대로 작동하므로 게스트를 종료하고 명령을 다시 실행했습니다.)
출력이 없었고 거의 즉시 명령 행으로 돌아 왔습니다.
게스트의 호스트 GPU 사용
게스트를 켜기 전에 먼저 virtualbox-dkms에 의해 문서화되지 않은 것이 커널에서 발생해야하는 경우를 대비하여 호스트 시스템을 재부팅했습니다. sudo
권한 없이 이전 명령을 실행함에 따라 변경 내용이 의심됩니다.
다음에 게스트를 시작했을 때 Windows Update에서 작업을 시작했으며 올바른 NVIDIA 드라이버를 자동으로 감지하여 설치했습니다. 모두 지금까지 좋아 보인다. 그래도 장치를 사용하기 전에 게스트를 재부팅해야했습니다 ...
문제
그래픽 카드 드라이버가 게스트에 설치되고 PCI 장치가 연결되었으므로 Windows 바탕 화면에 들어갈 수 없습니다. Windows 로그인 화면으로 이동 한 다음 로그인하면 화면에 "환영합니다"라는 문구가 표시되고 옆에 파란색 원이 표시되지 않습니다.
에서가 /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
되었지만 여전히 제대로 작동하지 않습니다. 호스트를 재부팅 한 후 게스트가 시작되고 로그인하면 모든 것이 시작되기 전에 모든 것처럼 보입니다. 두 번째 그래픽 카드에서 아무것도 출력하지 않습니다.
장치 관리자에서 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
호스트를 재부팅하지 않고 게스트 OS를 다시 시작하면 "환영"단계에서 디스플레이가 다시 정지됩니다. Windows 바로 가기를 사용하여 시스템을 강제 종료하지 않고 종료 할 수 있기 때문에 확실히 로그인 단계를 마칩니다 ..
이제 나는 아이디어가 부족합니다 ...이 작업을 수행 할 제안이 있습니까? 더 이상 정보를 제공 할 수 있습니까?
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!
CONFIG_CMDLINE_LINUX=intel_iommu=on
에 삽입 되었습니다 /etc/default/grub
. 이제 게스트 부츠는하지만 ... 그래픽 카드를 감지하지 않습니다
intel_iommu=soft
유효한 커널 옵션이 아닌 것 같습니다.이 옵션을 사용하면 intel_iommu=on
.. (으)로 되돌아갑니다 . www.kernel.org 에서는 사용할 수는 iommu=soft
있지만 문서를 찾을 수는 없습니다. 합니까?
iommu=soft
. 하드웨어 IOMMU (시스템에서 수많은 DMA 오류가 발생 함)를 비활성화하고 대신 소프트웨어 IOMMU를 사용합니다. 다음은 기존 스레드에 대한 링크 입니다. 모든 커널 패키지에 iommu = soft를 사용하도록 제안
intel_iommu=igfx_off
...
intel_iommu=soft
. 당신은 통과 시도 할 수 있습니다intel_iommu=on
.