History

Where did this come from?



Looking Glass is the brain child of Geoffrey McRae of HostFission. After many years of dual booting between Linux for work and Windows for entertainment Geoffrey decided there must be a better way. With the recent leaps in VFIO support with excellent PCI passthrough of video cards on systems that support IOMMU Geoffrey decided that it was time to revisit this problem and see if a integrated solution could be had.

After following guides Geoffrey managed to get a KVM Virtual Machine running with his GeForce 1080Ti, however he quickly noted that performance was lackluster on his AMD system. Further investigation revealed that if Nested Page Tables (NPT) was disabled the video performance was excellent, however the performance of the rest of the VM suffered greatly. This was a deal breaker and had to be resolved before this configuration could be considered a solution and rather then give up Geoffrey decided to investigate what the cause of the issue might be.

Several weeks went by digging through the kernel and qemu kvm sources, learning how KVM worked internally and reading every whitepaper AMD had on offer for IOMMU and KVM. During this discovery process it was noted that this same bug had been reported in the AMD Phenom processors over 10 years prior where it was affecting certain PCI devices. Correspondence between AMD and kernel developers was also found where AMD stated they were working on the problem, but with no updates for over 10 years it was clear they had little to no interest in fixing the problem. At this point the community had assumed for the most part that it was a hardware bug. This was not good news but through sheer persistence Geoffrey continued to work at the issue until he uncovered the cause and with much excitement he released the critical information which fixed this 10+ year old bug.

Enter Wendell of Level1. Wendell had already been covering IOMMU VFIO passthrough in recent videos for Level1Tech and when this patch was announced he jumped at it and demonstrated it fixed the problem in a video release. Part of this video release Wendell also stated that the next logical step would be to capture the framebuffer and display it on the host. Little did he know that Geoffrey had already implemented a proof of concept. After watching the video Geoffrey contacted Wendell and informed him of his work and helped Wendell to trial an early pre-alpha version of his software.

With some closed internal testing and some teaser screenshots posted to the Level1 forums, the community support was overwhelming. A vote was held to name the yet to be named application and the community decided on two names, "KVMFR" and "Looking Glass". It was decided that the protocol used to transfer video frames from guest to client would be called KVMFR (KVM Frame Relay), and the implementation of said protocol would be called Looking Glass. After branding the project it was released under GPL 2.0 to the public on GitHub.