add dracut support and make it possible to change your video disable choice

This commit is contained in:
HikariKnight 2023-04-09 19:48:49 +02:00
parent b4abc350e0
commit 18d9d928e5
3 changed files with 50 additions and 8 deletions

View file

@ -0,0 +1,17 @@
package configs
import (
"fmt"
"github.com/HikariKnight/quickpassthrough/pkg/fileio"
)
func Set_Dracut() {
config := GetConfig()
// Write the dracut config file
fileio.AppendContent("add_drivers+=\" vfio_pci vfio vfio_iommu_type1 vfio_virqfd \"\n", fmt.Sprintf("%s/vfio.conf", config.Path.DRACUT))
// Add to our kernel arguments file that vfio_pci should load early (dracut does this using kernel arguments)
fileio.AppendContent(" rd.driver.pre=vfio_pci", config.Path.CMDLINE)
}

View file

@ -1,11 +1,20 @@
package configs package configs
import "github.com/HikariKnight/quickpassthrough/pkg/fileio" import (
"fmt"
func DisableVFIOVideo() { "github.com/HikariKnight/quickpassthrough/pkg/fileio"
)
func DisableVFIOVideo(i int) {
// Get the config // Get the config
config := GetConfig() config := GetConfig()
// Add to the kernel arguments that we want to disable VFIO video output on the host // Add to the kernel arguments that we want to disable VFIO video output on the host
fileio.AppendContent(" vfio_pci.disable_vga=1", config.Path.CMDLINE) fileio.AppendContent(
fmt.Sprintf(
" vfio_pci.disable_vga=%v", i,
),
config.Path.CMDLINE,
)
} }

View file

@ -4,6 +4,7 @@ import (
"regexp" "regexp"
"github.com/HikariKnight/quickpassthrough/internal/configs" "github.com/HikariKnight/quickpassthrough/internal/configs"
"github.com/HikariKnight/quickpassthrough/pkg/fileio"
) )
// This function processes the enter event // This function processes the enter event
@ -68,14 +69,29 @@ func (m *model) processSelection() bool {
// If user selected yes then // If user selected yes then
if selectedItem.(item).title == "YES" { if selectedItem.(item).title == "YES" {
// Add disable VFIO video to the config // Add disable VFIO video to the config
configs.DisableVFIOVideo() configs.DisableVFIOVideo(1)
} else {
// Add disable VFIO video to the config
configs.DisableVFIOVideo(0)
} }
// Get the device ids for the selected gpu using ls-iommu // Get our config struct
gpu_IDs := getIOMMU("-gr", "-i", m.gpu_group, "--id") config := configs.GetConfig()
// Configure modprobe // If we have files for modprobe
configs.Set_Modprobe(gpu_IDs) if fileio.FileExist(config.Path.MODPROBE) {
// Get the device ids for the selected gpu using ls-iommu
gpu_IDs := getIOMMU("-gr", "-i", m.gpu_group, "--id")
// Configure modprobe
configs.Set_Modprobe(gpu_IDs)
}
// If we have a folder for dracut
if fileio.FileExist(config.Path.DRACUT) {
// Configure dracut
configs.Set_Dracut()
}
// Go to the next view // Go to the next view
//m.focused++ //m.focused++