我正在尝试做一个GPU 直通我确实得到了一些结果,在安装驱动程序之前它可以工作,但之后它只显示引导加载,然后变成黑屏。使用 VNC 我设法得到了这个图像:
我正在运行它:
qemu-system-x86_64 \
-name 'Win10' \
-machine type=q35,accel=kvm,kernel_irqchip=on,vmport=off \
-m 32G \
-mem-path /run/hugepages/kvm \
-cpu host,kvm=off,+kvm_pv_unhalt,+kvm_pv_eoi,topoext,amd-stibp=off,hv_relaxed,hv-vapic,hv-spinlocks=8191,hv_vpindex,hv-runtime,hv_time,hv-synic,hv-stimer,hv-vendor-id=123456789ab,hv-reset,hv-frequencies \
-smp 16,sockets=1,cores=8,threads=2 \
-nodefaults \
-bios /usr/share/ovmf/OVMF.fd \
-smbios 'type=1,uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-netdev user,id=n0,hostfwd=tcp::5900-:5900 \
-device e1000,netdev=n0 \
-object input-linux,id=kbd0,evdev=/dev/input/by-id/usb-SONiX_USB_DEVICE-event-kbd,grab_all=on,repeat=on \
-object input-linux,id=mouse0,evdev=/dev/input/by-id/usb-Razer_Razer_DeathAdder_Essential-event-mouse \
-device virtio-mouse-pci \
-device virtio-keyboard-pci \
-monitor telnet::5555,server,nowait \
-nographic \
-vga none \
-display none \
-device vfio-pci,host=2d:00.0,multifunction=on,x-vga=on,x-pci-sub-vendor-id=0x1458,x-pci-sub-device-id=0x232c \
-device vfio-pci,host=2d:00.1 \
-rtc base=localtime,clock=host,driftfix=slew \
-object iothread,id=io0 \
-drive 'if=none,id=disk0,format=qcow2,aio=threads,cache=writeback,l2-cache-size=64M,cache-clean-interval=900,file=win.qcow2' \
-device virtio-blk-pci,drive=disk0,iothread=io0 \
-drive "media=cdrom,file=$HOME/virtio.iso" \
-boot c
kernel_irqchip=on
被建议这里和这里vmport=off
被建议这里kvm=off
并被hv-vendor-id=
建议这里和这里+kvm_pv_unhalt
并被+kvm_pv_eoi
建议这里topoext
被建议这里amd-stibp=off
被建议这里hv_relaxed
,,,,,,,,,,并被建议hv-vapic
hv-spinlocks
hv_vpindex
hv-runtime
hv_time
hv-synic
hv-stimer
hv-reset
hv-frequencies
这里,这里和这里x-pci-sub-vendor-id
并被x-pci-sub-device-id
建议这里- 我还尝试
romfile=
按照建议使用 GPU-Z 在设备中提取 rom这里,这里和这里。
我还将我的内核命令附加了amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb video=vesafb:off,efifb:off"
。这是建议这里,这里和这里。
在运行虚拟机之前,我运行以下脚本:
sysctl vm.nr_hugepages=16384 vm.min_free_kbytes=112640 kernel.shmmax=34359738368
sync
echo 3 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/compact_memory
echo 0 > /sys/module/kvm/parameters/report_ignored_msrs
echo 1 > /sys/module/kvm/parameters/ignore_msrs
echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
systemctl stop lightdm
systemctl isolate multi-user
while systemctl is-active --quiet lightdm; do
sleep 1
done
echo 0 > /sys/class/vtconsole/vtcon1/bind
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind || :
echo 1 > /sys/bus/platform/drivers/efi-framebuffer/unbind || :
echo '0000:2d:00.1' > '/sys/bus/pci/devices/0000:2d:00.1/driver/unbind' || :
echo 'vfio-pci' > '/sys/bus/pci/devices/0000:2d:00.0/driver_override'
echo 'vfio-pci' > '/sys/bus/pci/devices/0000:2d:00.1/driver_override'
echo '1002 ab28' > /sys/bus/pci/drivers/vfio-pci/new_id
echo '1002 73bf' > /sys/bus/pci/drivers/vfio-pci/new_id
- 大部分建议这里。
vm.nr_hugepages
被建议这里drop_caches
并被compact_memory
建议这里ignore_msrs
并被report_ignored_msrs
建议这里和这里。allow_unsafe_interrupts
被建议这里和这里
正如您所看到的,我遵循了几个建议,即使对于那些与代码 43 无关的建议,我也不知道该如何解决......
电脑规格
- 操作系统:Ubuntu 20.04.4 内核 5.15.0-41-generic
- 处理器:AMD Ryzen 9 5900X
- 显卡:AMD Radeon RX 6900 XT
- 主板:MSI B550 Gaming Carbon WiFi
- QEMU:4.2.1(我也尝试过7.0.0)
答案1
我可以通过在 BIOS 中禁用可调整大小的 BAR 来解决我的 RX 6900 XT 的问题。
答案2
尝试使用下面的 grub 命令
amd_iommu=on iommu=pt nofb nomodeset video=vesafb:off,efifb:off vga=normal i915.modeset=0
或者
amd_iommu=on iommu=pt nofb nomodeset video=efifb:off vga=normal i915.modeset=0