With the 1.0 virtio standard finalized by the committee (though minor non-material corrections and clarifications are still trickling in), Michael Tsirkin did the heavy lifting of writing the Linux drivers (based partly on an early prototype of mine).
But I wanted an independent implementation to test: both because OASIS insists on multiple implementations before standard ratification, but also because I wanted to make sure the code which is about to go into the merge window works well.
Thus, I began the task of making lguest understand PCI. Fortunately, the osdev wiki has an excellent introduction on how to talk PCI on an x86 machine. It didn’t take me too long to get a successful PCI bus scan from the guest, and start about implementing the virtio parts.
The final part (over which I procrastinated for a week) was to step through the spec and document all the requirements in the lguest comments. I also added checks that the guest driver was behaving sufficiently, but now it’s finally done.
It also resulted in a few minor patches, and some clarification patches for the spec. No red flags, however, so I’m reasonably confident that 3.20 will have compliant 1.0 virtio support!