still fail at virt manager

This commit is contained in:
Kopatz
2024-04-24 16:38:40 +02:00
parent 0c9a60a377
commit f0eee9c0eb
4 changed files with 28 additions and 43 deletions

View File

@@ -33,6 +33,7 @@ in
environment.sessionVariables = { environment.sessionVariables = {
__GL_YIELD = "usleep";
MOZ_ENABLE_WAYLAND = "1"; MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
}; };

View File

@@ -9,6 +9,6 @@ in
}; };
config = mkIf (cfg.enable && config.virtualisation.libvirtd.enable) { config = mkIf (cfg.enable && config.virtualisation.libvirtd.enable) {
boot.kernelParams = [ "amd_iommu=on" ]; boot.kernelParams = [ "amd_iommu=on" "iommu=pt" ];
}; };
} }

View File

@@ -1,53 +1,41 @@
exec 19>>/home/kopatz/Desktop/stoplogfile #exec 19>>/home/kopatz/Desktop/stoplogfile
BASH_XTRACEFD=19 #BASH_XTRACEFD=19
set -x #set -x
set +o errexit #set +o errexit
set +o nounset #set +o nounset
set +o pipefail #set +o pipefail
GUEST_NAME="$1" GUEST_NAME="$1"
HOOK_NAME="$2" HOOK_NAME="$2"
STATE_NAME="$3" STATE_NAME="$3"
GPU_PCI="pci_0000_2B_00_0" GPU_PCI="pci_0000_2b_00_0"
GPU_AUDIO_PCI="pci_0000_2B_00_1" GPU_AUDIO_PCI="pci_0000_2b_00_1"
GPU_MODULES="nvidia_drm nvidia_modeset nvidia_uvm nvidia" #GPU_MODULES="nvidia_uvm nvidia_drm nvidia_modeset nvidia"
if [ "$GUEST_NAME" != "gpu_passthrough" ]; then if [[ ! "$GUEST_NAME" =~ ^gpu_passthrough ]]; then
exit 0 exit 0
fi fi
if [ "$HOOK_NAME" == "prepare" ] && [ "$STATE_NAME" == "begin" ]; then if [ "$HOOK_NAME" == "prepare" ] && [ "$STATE_NAME" == "begin" ]; then
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# Stop plasma # Stop plasma
systemctl --user --machine=kopatz@ stop plasma-\*
systemctl stop display-manager.service systemctl stop display-manager.service
sleep 2 echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# Start default network # Unload kernel module
virsh net-start default modprobe -r nvidia_uvm
modprobe -r nvidia_drm
# Unload AMDGPU kernel module modprobe -r nvidia_modeset
modprobe -r $GPU_MODULES modprobe -r nvidia
# Detach GPU from host # Detach GPU from host
virsh nodedev-detach $GPU_PCI virsh nodedev-detach $GPU_PCI
virsh nodedev-detach $GPU_AUDIO_PCI virsh nodedev-detach $GPU_AUDIO_PCI
sleep 10
# Load VFIO kernel modules # Load VFIO kernel modules
modprobe vfio_pci modprobe vfio-pci
exit 0
elif [ "$HOOK_NAME" == "release" ] && [ "$STATE_NAME" == "end" ]; then elif [ "$HOOK_NAME" == "release" ] && [ "$STATE_NAME" == "end" ]; then
# Stop default network
virsh net-destroy default
# Unload VFIO kernel modules # Unload VFIO kernel modules
modprobe -r vfio-pci modprobe -r vfio-pci
@@ -55,21 +43,16 @@ elif [ "$HOOK_NAME" == "release" ] && [ "$STATE_NAME" == "end" ]; then
virsh nodedev-reattach $GPU_PCI virsh nodedev-reattach $GPU_PCI
virsh nodedev-reattach $GPU_AUDIO_PCI virsh nodedev-reattach $GPU_AUDIO_PCI
sleep 5 echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
# Load NVIDIA kernel modules # Load NVIDIA kernel modules
modprobe $GPU_MODULES modprobe nvidia
modprobe nvidia_modeset
modprobe nvidia_drm
modprobe nvidia_uvm
sleep 2
# Bind EFI Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind
# Bind VTconsoles
echo 1 > /sys/class/vtconsole/vtcon0/bind echo 1 > /sys/class/vtconsole/vtcon0/bind
echo 1 > /sys/class/vtconsole/vtcon1/bind echo 1 > /sys/class/vtconsole/vtcon1/bind
# Start DM # Start DM
systemctl start display-manager.service systemctl start display-manager.service
fi fi

View File

@@ -20,7 +20,8 @@ in
libvirtd = { libvirtd = {
enable = true; enable = true;
qemu = { qemu = {
package = pkgs.qemu_kvm; #package = pkgs.qemu_kvm;
runAsRoot = true;
swtpm.enable = true; swtpm.enable = true;
ovmf.enable = true; ovmf.enable = true;
ovmf.packages = [ pkgs.OVMFFull.fd ]; ovmf.packages = [ pkgs.OVMFFull.fd ];