hikariknight / quickpassthrough Goto Github PK
View Code? Open in Web Editor NEWA project to remove the complexity of setting up GPU passthrough for qemu
License: MIT License
A project to remove the complexity of setting up GPU passthrough for qemu
License: MIT License
Does the script still work correctly? I read that vfio_virqfd is now built into the kernel directly?
-> Running build hook: [fsck]
==> ERROR: module not found: 'vfio_virqfd'
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img'
==> WARNING: errors were encountered during the build. The image may not be complete
Hi, I must say that i really like your work! It worked flawlessly for me!
I'm just wondering if you have any ideas or plans for making a dynamic version of this? Lets say i want to detach my 3070 when i start my VM and then reattach it again to my host when i shut the VM down.
I have AMD Ryzen 7600X CPU with Raphael iGPU and RTX 4060 dGPU.
I want to make iGPU pass to guest OS while Linux host using NVIDIA GPU. But after select the IOMMU groups the app crashes and returns panic.
panic: runtime error: index out of range [0] with length 0
goroutine 1 [running]:
github.com/HikariKnight/quickpassthrough/internal/pages.genVBIOS_dumper(0xc000100870)
/home/runner/work/quickpassthrough/quickpassthrough/internal/pages/03_vbios_extract.go:30 +0x37f
github.com/HikariKnight/quickpassthrough/internal/pages.viewGPU(0xc000100870, {0x0?, 0x0, 0x2?})
/home/runner/work/quickpassthrough/quickpassthrough/internal/pages/02_select_gpu.go:107 +0x4de
github.com/HikariKnight/quickpassthrough/internal/pages.SelectGPU(0xc000100870)
/home/runner/work/quickpassthrough/quickpassthrough/internal/pages/02_select_gpu.go:36 +0x105
github.com/HikariKnight/quickpassthrough/internal/pages.Welcome()
/home/runner/work/quickpassthrough/quickpassthrough/internal/pages/01_welcome.go:48 +0x271
github.com/HikariKnight/quickpassthrough/internal.Tui()
/home/runner/work/quickpassthrough/quickpassthrough/internal/ui_main.go:23 +0xbb
main.main()
/home/runner/work/quickpassthrough/quickpassthrough/cmd/main.go:23 +0xa5
By the way, in the error log, the home directory is not same as mine. My /home
is /home/kaan
.
How can I solve that issue?
i have 2 gpus and virtualization enabled, so it should work
this is the output of
lspci -k | grep -E "vfio|NVIDIA"
07:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] (rev a1)
Kernel driver in use: vfio-pci
07:00.1 Audio device: NVIDIA Corporation GA106 High Definition Audio Controller (rev a1)
also, i checked dmesg and it showed that both devices are being added:
[ 6.910118] vfio_pci: add [10de:2504[ffffffff:ffffffff]] class 0x000000/00000000
[ 6.910137] vfio_pci: add [10de:228e[ffffffff:ffffffff]] class 0x000000/00000000
vfio_pci.ids=10de:2504,10de:228e
(they are both correct, i triple checked)
and also in /etc/modprobe.d/vfio.conf
i also added options vfio-pci ids=10de:2504,10de:228e
but it didnt work either
Does this have support built in if you don't have two gpus and just want to pass through one?
I am confused, is it possible and if how to use this with quickemu?
When running vfio-setup
, I get to the following output:
These are your graphic cards, they have to be in separate groups.
The graphic card you want to passthrough cannot be in a group with other devices that
does not belong to itself. Both cards must also have unique hardware ids [xxxx:yyyy]!:
#------------------------------------------#
IOMMU Group 15: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1)
IOMMU Group 17: NVIDIA Corporation GA104 [GeForce RTX 3070 Ti] [10de:2482] (rev a1)
#------------------------------------------#
Press q to quit
Which group number do you want to check?:
I want to pass through my RTX 3070 Ti, so I enter '17' here and press ENTER, then receive the following output:
For this card to be passthrough-able, it must contain only:
* The GPU/Graphic card
* The GPU Audio Controller
Optionally it may also include:
* GPU USB Host Controller
* GPU Serial Port
* GPU USB Type-C UCSI Controller
* PCI Bridge (if they are in their own IOMMU groups)
#------------------------------------------#
IOMMU Group 15: Audio device: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1)
IOMMU Group 15: VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1)
IOMMU Group 17: Audio device: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)
IOMMU Group 17: VGA compatible controller: NVIDIA Corporation GA104 [GeForce RTX 3070 Ti] [10de:2482] (rev a1)
#------------------------------------------#
To use any of these devices for passthrough ALL of them (except PCI bridges in their own IOMMU groups) has to be passed through to the VMs
To return to the previous page just press ENTER without typing in anything.
Do you want to use these devices for passthrough? [y/N]:
Is it normal behaviour for the script to say that both GPUs must be passed through, despite being in separate groups?
Since running the script, the main system (manjaro) cannot use the dedicated nvidia card. I have since reinstalled the system, but the situation has not changed. If I install nvidia's nonfree drivers, the system won't boot. If the system starts with free drivers, there is no problem, but the graphics performance is very poor due to the lack of a dedicated card
Can u help me to get the dedicated card back?
Thank you
I have 2 AMD RX580's (identical). Is it possible to have VFIO work?
not sure, if the following might be considered as an issue, and thank you for taking your time of reading this.
sudo ./quickpassthrough
Terminal returns:
Download failed: server returned 404 Not Found
2024/04/02 16:32:22 If the above error is 404, then we could not communicate with the GitHub API
Please manually download and extract ls-iommu to: utils/
You can download it from: https://github.com/HikariKnight/ls-iommu/releases
Thus, I followed the instruction, and downloaded the ls-iommu_Linux_x86_64.tar.gz
file from the corresponding project release page and extract the ls-iommu
to the directory quickpassthrough/utils/
and, rerun the command
sudo ./quickpassthrough
Terminal returns:
Download failed: server returned 404 Not Found
Existing ls-iommu binary detected in "utils/", will use that instead as the GitHub API did not respond.
2024/04/02 16:33:15 open utils/ls-iommu_Linux_x86_64.tar.gz: no such file or directory
then, I copied the ls-iommu_Linux_x86_64.tar.gz
file to the utils
directory, and rerun the same command.
the following is the Terminal output:
Download failed: server returned 404 Not Found
Existing ls-iommu binary detected in "utils/", will use that instead as the GitHub API did not respond.
2024/04/02 16:46:43 Failed to open: utils/ls-iommu_Linux_x86_64.tar.gz
2024/04/02 16:46:43 open utils/ls-iommu_Linux_x86_64.tar.gz: no such file or directory
and the file ls-iommu_Linux_x86_64.tar.gz
I coped to utils
directory was deleted automatically.
the problem seems to be recursive.
VFIO-enabler is just a placeholder name.
I am looking for suggestions for proper name for the project.
Some ideas that have been suggested are
I'm getting following error message using your script:
WARNING: failed to determine memory area for node: open /sys/devices/system/node/node0/memory_failure/state: no such file or directory
Its an infinitive loop and i need to abort.
System is running in EFI mode and does has entries in the folder, but not "state"
โฏ ls /sys/devices/system/node/node0/memory_failure/ delayed failed ignored recovered total
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.