Câu hỏi ngắn:
Làm cách nào để bật intel_iommu
cài đặt trong nhân Linux? Tôi chạy một máy chủ Debian, sử dụng bộ tải khởi động grub2. Tài liệu tôi từng thấy nói là chỉnh sửa /boot/grub/menu.lst
, dường như chỉ liên quan đến grub 1.x, vì tôi không có tệp đó.
Theo hiểu biết của tôi (và tùy chọn cuối cùng tôi có thể nghĩ đến) rằng việc thay đổi tùy chọn khởi động này có thể thoát khỏi thông báo lỗi sau trong /var/log/kern.log
vboxpci: No IOMMU domain (attach)
Câu hỏi dài:
Cho phép một hệ điều hành khách truy cập trực tiếp vào card đồ họa
Gần đây tôi nhận ra rằng có thể chuyển qua một thiết bị PCI-express để chạy hệ điều hành khách trong Virtualbox. Thật tuyệt, tôi nghĩ! Tôi đã có hai card đồ họa NVIDIA Quadro FX (có kết nối cầu SLI, điều mà tôi hy vọng không gây ra sự đau buồn) và muốn dành tặng card đồ họa thứ 2 cho HĐH khách, để tôi có thể sử dụng các tính năng OpenGL trong Photoshop và cộng sự.
NVIDIA tiếp thị cấu hình " SLI Multi-OS " này, về cơ bản là những gì tôi muốn thiết lập từ lâu, nhưng tôi không muốn chi quá nhiều cho phần mềm Virtualisation (cực kỳ máy trạm Parallels), khi tôi đã sử dụng VirtualBox khá hạnh phúc trong nhiều năm nay.
Hệ thống máy chủ
Tôi đang chạy linux-3.5.0-19 từ kho lưu trữ Debian, trên thiết bị máy trạm khá cao cấp (Asus P6T7 WS Supercomputer mobo w / chipset Intel ICH10R và CPU Xeon W3680) và muốn bật hỗ trợ IOMMU trong kernel , tốt nhất là không cần phải tự biên dịch nó.
BIOS
Trong cài đặt BIOS, tôi đã bật hỗ trợ VT-x và VT-d. Tôi không thể thấy bất cứ điều gì đặc biệt đề cập đến IOMMU, mặc dù.
Gắn thiết bị PCI
Điều này thật đơn giản đến bất ngờ! Tài liệu VirtualBox chính thức có ở đây . Những gì tôi đã làm, điều mà tôi thấy ít mơ hồ hơn, là mở nvidia-settings
, chọn card đồ họa thứ cấp và lưu ý ID Bus ("PCI: 5: 0: 0" trong trường hợp của tôi). Sau đó, từ dòng lệnh của máy chủ: -
VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0
. để cài đặt trình điều khiển mới cần thiết. Khởi động lại sau và mọi thứ đều hoạt động tốt, vì vậy tôi tắt máy khách và chạy lại lệnh.)
Không có đầu ra, và tôi đã được đưa trở lại dòng lệnh gần như ngay lập tức.
Sử dụng GPU máy chủ từ khách
Trước khi bật máy khách, trước tiên tôi khởi động lại máy chủ, trong trường hợp có điều gì đó không có giấy tờ cần thiết xảy ra trong kernel, bởi virtualbox-dkms. Tuy nhiên, khi tôi chạy lệnh trước mà không có sudo
đặc quyền, tôi nghi ngờ bất kỳ thay đổi nào đã được thực hiện.
Khi tôi bắt đầu tiếp khách, Windows Update bắt đầu thực hiện công việc của mình và tự động phát hiện và cài đặt trình điều khiển NVIDIA chính xác. Tất cả nhìn tốt cho đến nay. Trước khi tôi có thể sử dụng thiết bị, tôi phải khởi động lại khách ...
Vấn đề
Bây giờ trình điều khiển card đồ họa đã được cài đặt trên máy khách và thiết bị PCI được đính kèm, tôi không thể vào máy tính để bàn Windows. Tôi vào màn hình đăng nhập Windows, sau đó sau khi đăng nhập, màn hình đóng băng, chỉ nói "Chào mừng", với một vòng tròn đáng lẽ phải quay nhưng không phải là màu xanh bên cạnh.
Trong /var/log/kern.log
, các tin nhắn cuối cùng được in là: -
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)
Bất kỳ ý tưởng làm thế nào để khắc phục điều này?
CẬP NHẬT:
Bây giờ tôi đã có kernel khởi động intel_iommu=on
, nhưng mọi thứ vẫn không hoạt động hoàn toàn .. Sau khi khởi động lại máy chủ, khách bắt đầu, đăng nhập ổn và mọi thứ dường như trước khi bắt đầu bất kỳ điều gì. Card đồ họa thứ 2 của tôi không xuất ra bất cứ thứ gì.
Trong Trình quản lý thiết bị, có dấu chấm than bên cạnh thiết bị Quadro FX và có mã lỗi 12 trong thuộc tính của thiết bị, với thông báo "Thiết bị này không thể tìm đủ tài nguyên miễn phí". Mô tả thêm về technet.microsoft.com .
Trong nhật ký kernel, có vẻ đầy hứa hẹn: -
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
Nếu tôi khởi động HĐH khách lần thứ hai, mà không khởi động lại máy chủ, màn hình sẽ đóng băng lại ở giai đoạn "Chào mừng". Nó chắc chắn kết thúc giai đoạn đăng nhập, vì tôi có thể sử dụng các phím tắt windows để tắt máy mà không cần tắt máy ..
Bây giờ tôi đã hết ý tưởng ... Có gợi ý nào để thực hiện công việc này không? Tôi có thể cung cấp thêm thông tin gì không?
CẬP NHẬT2:
dmesg
chứa một số lỗi thú vị hơn, nhưng tôi không biết tôi có thể làm gì với chúng:
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
vào /etc/default/grub
. Bây giờ khách khởi động, nhưng không phát hiện ra card đồ họa ...
intel_iommu=soft
dường như không phải là một tùy chọn kernel hợp lệ và khi tôi sử dụng nó, nó được hoàn nguyên về intel_iommu=on
.. Từ www.kernel.org , bạn có thể có iommu=soft
, nhưng tôi không thể tìm thấy bất kỳ tài liệu nào cho điều đó .. Bạn có biết nó là gì không làm?
iommu=soft
. Nó vô hiệu hóa IOMMU phần cứng (gây ra nhiều lỗi DMA trên hệ thống của tôi) và sử dụng phần mềm IOMMU thay thế. Đây là một liên kết đến một chủ đề cũ: Đề xuất sử dụng iommu = soft cho tất cả các gói kernel
intel_iommu=igfx_off
...
intel_iommu=soft
. Bạn có thể thử đi quaintel_iommu=on
.