April 14, 2017
I feel like I need to provide an update on GPU passthrough. As it so happens, there is likely to be an IRQ interrupt clash resulting in audio lockups over HDMI and pixelated graphic corruption.
The solution to this is to force windows to use your graphics card in message based rather than line based interrupts. GeForce cards use the line based interrupts by default but support message based interrupts. I was able to get a far more stable graphics performance using the utility linked to from this post on the guru3d forums. This utility forces message base (MSI) interrupts on selected devices. I was able to force my Geforce graphics card to use MSI and stability improved remarkably.
You can check if your card supports MSI by running the following command and looking for MSI: Enable. When this is followed by a minus (-) symbol MSI is enabled and not used, and when followed by a plus (+) symbol MSI is enabled and used for that particular device.
$ sudo lspci -v -s 4:00.0
04:00.0 VGA compatible controller: NVIDIA Corporation Device 1c82 (rev a1) (prog-if 00 [VGA controller])
Subsystem: eVga.com. Corp. Device 6251
Physical Slot: 2
Flags: bus master, fast devsel, latency 0, IRQ 65
Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=32M]
I/O ports at d000 [size=128]
Expansion ROM at fb000000 [disabled] [size=512K]
Capabilities:  Power Management version 3
Capabilities:  MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities:  Express Legacy Endpoint, MSI 00
Capabilities:  Virtual Channel
Capabilities:  Latency Tolerance Reporting
Capabilities:  Power Budgeting <?>
Capabilities:  Advanced Error Reporting
Capabilities:  Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Capabilities:  #19
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
You can read more about interrupts on the VFIO tips blog.