mirror of
https://gitlab.com/YuriAlek/vfio.git
synced 2024-11-19 03:25:32 +00:00
109 lines
3.8 KiB
Markdown
109 lines
3.8 KiB
Markdown
# A compilation of hardware and software combinations working for other people
|
|
|
|
**Before creating a merge pull, be sure to read this guide**
|
|
|
|
The files should be named like [{CPU} - {GPU} - {User}.md]; example
|
|
```
|
|
Ryzen 5 2600 - GTX 770 - @YuriAlek.md
|
|
```
|
|
|
|
## Inside must be something like this:
|
|
### System
|
|
```
|
|
[Author]
|
|
@YuriAlek
|
|
|
|
[Hardware]
|
|
CPU: AMD Ryzen 5 2600
|
|
Motherboard: Gigabyte AB350M-Gaming 3 rev1.1
|
|
Motherboard BIOS: F23d
|
|
RAM: 16GB
|
|
GPU: Gigabyte Nvidia GeForce GTX 770
|
|
GPU model: GV-N770OC-2GD
|
|
GPU BIOS: 80.04.C3.00.0F
|
|
GPU codename: GK104
|
|
|
|
[Software]
|
|
Linux Distro: ArchLinux
|
|
Linux Kernel: 4.17.14 vanilla
|
|
Nvidia divers: 396.51-1
|
|
QEMU version: 2.12.1-1
|
|
OVMF version: r24021
|
|
|
|
[Guests]
|
|
Windows 10 Pro 1709 x64
|
|
MacOS High Sierra 10.13.3
|
|
```
|
|
|
|
### How I did it
|
|
For extracting the `vBIOS` I used the 1st method in Linux and edited it.
|
|
|
|
You can add anything that you consider useful like the step needed in your distro for installing everything. The more information, and solutions, the better.
|
|
|
|
### Files to modify
|
|
#### `scripts/windows.sh`
|
|
My GPU uses one more Kernel Module so I have to add it as the first module to unload and the last to load:
|
|
```
|
|
# Unload the Kernel Modules that use the GPU
|
|
modprobe -r nvidia_drm
|
|
sleep 1
|
|
...
|
|
------------------------
|
|
# Reload the kernel modules. This loads the drivers for the GPU
|
|
...
|
|
modprobe nvidia_drm
|
|
sleep 1
|
|
```
|
|
|
|
I use PulseAudio so I had to kill it for detaching the GPU.
|
|
```
|
|
## Kill X and related
|
|
pulseaudio -k
|
|
---------------------
|
|
# Reload the Display Manager to access X
|
|
...
|
|
pulseaudio --start
|
|
```
|
|
|
|
I don't pass a USB controller so I had to add manually USB devices.
|
|
```
|
|
# Remove
|
|
...
|
|
echo $usbid > /sys/bus/pci/drivers/vfio-pci/new_id
|
|
sleep 1
|
|
echo $usbbusid > /sys/bus/pci/devices/$usbbusid/driver/unbind
|
|
sleep 1
|
|
echo $usbbusid > /sys/bus/pci/drivers/vfio-pci/bind
|
|
sleep 1
|
|
echo $usbid > /sys/bus/pci/drivers/vfio-pci/remove_id
|
|
#ls -la /sys/bus/pci/devices/$usbbusid/
|
|
sleep 1
|
|
...
|
|
-device vfio-pci,host=$IOMMU_USB \
|
|
...
|
|
echo $usbbusid > /sys/bus/pci/devices/$usbbusid/driver/unbind
|
|
echo $usbbusid > /sys/bus/pci/drivers/xhci_hcd/bind
|
|
sleep 10
|
|
...
|
|
----------------------
|
|
# Add to the QEMU script
|
|
...
|
|
-object input-linux,id=kbd,evdev=/dev/input/by-id/usb-HOLDCHIP_USB_Gaming_Keyboard-event-kbd,grab_all=on,repeat=on \
|
|
-object input-linux,id=kbd2,evdev=/dev/input/by-id/usb-HOLDCHIP_USB_Gaming_Keyboard-if01-event-kbd,grab_all=on,repeat=on \
|
|
-object input-linux,id=mouse-event,evdev=/dev/input/by-id/usb-Logitech_G700_Laser_Mouse_6B5EFC4B0035-event-mouse \
|
|
-object input-linux,id=kbd3,evdev=/dev/input/by-id/usb-Logitech_G700_Laser_Mouse_6B5EFC4B0035-if01-event-kbd,grab_all=on,repeat=on \
|
|
...
|
|
```
|
|
|
|
I use an image instead of a hard drive.
|
|
```
|
|
# Remove
|
|
-device virtio-scsi-pci,id=scsi0 \
|
|
-device scsi-hd,bus=scsi0.0,drive=rootfs \
|
|
-drive id=rootfs,file=$HDD,media=disk,format=raw,if=none
|
|
-----------------
|
|
# Add
|
|
-device ide-drive,bus=ide.1,drive=rootfs \
|
|
-drive id=rootfs,if=none,file=$IMG,format=raw
|
|
```
|