still fail at virt manager
This commit is contained in:
@@ -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";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 ];
|
||||||
|
|||||||
Reference in New Issue
Block a user