<div dir="ltr"><div><a href="https://github.com/UmbraMalison/qemu-igdvfio">https://github.com/UmbraMalison/qemu-igdvfio</a><br></div><div><br></div>Hi all,<div><br></div><div>I am publishing my work on IGD Direct Assignment in a semi-working state as I need some help from the community to finish these. It may also be a good time to take in comments from the community.</div><div><br></div><div>There has been an increased interest in IGD DA of recent, and as such there has been many patches in both QEMU and XEN.</div><div><br></div><div>What makes these patches different is that they address some areas of concern (whilst probably adding a few new ones).</div><div><br></div><div>IGDVFIO:<br></div><div>1) uses Q35 chipset and does not duplicate LPC controllers</div><div>2) uses VFIO, extending it to support IGD and does not use legacy passthrough or XEN passthrough.</div><div>3) attempts to mimic host bios PCI configuration.</div><div><br></div><div>IGDVFIO does have some hacks, these are mostly temporary as they require some effort to resolve and I plan to only do this once full IGD support in guest is realised.</div><div><br></div><div>Hacks:</div><div>1) use of /dev/mem for memory mapping - this might be done by VFIO kernel driver</div><div>2) use of hardcoded LPC ID's in seabios and ich9_lpc.c - this might be solved by relaxing seabios, or providing another method for chipset identification. </div><div>3) IGD detection in the chipset - simply need to devise a function to detect IGD</div><div>n) ...</div><div><br></div><div>Current functionality:</div><div>i915 loads and DRM debug info matches host output in all respects except for the base addresses of DSM and opregion (as these are relocated in guest memory).</div><div>Intel frame buffer also appears to work.</div><div><br></div><div>Xorg drivers (in the guest) do not work, IGD falls into a loop of resetting and failing to find anything on the blitter ring. in the logs it can be seen that the ring buffer is working, but the blitter ring is full of zeros. Which means that the GPU is probably reading from the wrong location.</div><div><br></div><div>As this is a little complex, and I suspect that I have missed some important information, I will be updating github and wiki with detailed instructions on how to use these patches. Currently the wiki is out of date, so check for updates v.soon.</div><div><a href="https://github.com/UmbraMalison/qemu-igdvfio">https://github.com/UmbraMalison/qemu-igdvfio</a><br></div><div><br></div><div>patches are based on qemu 2.1 and seabios 1.7.5 respectively.</div><div><br></div><div>Attached are the patches, incase this is a more usable format. They do also include Alex Williamsons e820 patch, this is not mentioned in the following patch emails. </div><div><br></div><div>Kind Regards,</div><div><br></div><div>Andrew Barnes</div></div>