GPU Passtrough on Linuxmint 21
Install virt-manager
sudo apt-get install virt-manager bridge-utils
Create a Linux Bridge
add the following to /etc/network/interfaces
auto enp4s0
iface enp4s0 inet dhcp
add the following to /etc/network/interfaces.d/br0
# static ip config file for br0 ##
auto br0
iface br0 inet static
        address 192.168.178.10
        broadcast 192.168.178.255
        netmask 255.255.255.0
        gateway 192.168.178.1
        # If the resolvconf package is installed, you should not edit 
        # the resolv.conf configuration file manually. Set name server here
        dns-nameservers 192.168.178.1
        # If you have muliple interfaces such as eth0 and eth1
        # bridge_ports eth0 eth1  
        bridge_ports enp4s0
        bridge_stp off       # disable Spanning Tree Protocol
        bridge_waitport 0    # no delay before a port becomes available
        bridge_fd 0          # no forwarding delay
Step 1: Enable IOMMU
edit /etc/default/grub at the line GRUB_CMDLINE_LINUX_DEFAULT so that it reads like
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
Then reconfigure Grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
Step 2: Tell VFIO we want to pass through the NVIDIA card
lspci -nnk
In my case the id of the GPU is 10de:17c8 and the HDMI sound output is 10de:0fb0.  Note the part beneath the GPU where it says Kernel driver in use: nouveau.. If everything works correctly that should change by the time we're done. To flag the card for use by VFIO, create the file /etc/modprobe.d/vfio.conf with the contents:
softdep nouveau pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci
options vfio-pci ids=10de:17c8,10de:0fb0
Then run
sudo update-initramfs -u
to update the boot filesystem image with that config. You'll need to reboot at this point. To check if everything worked correctly, run lspci -nnk again and find the GPU. Beneath both of the NVIDIA devices we passed through you should see Kernel driver in use: vfio-pci.