[vfio-users] Some questions regarding VGA Arbitration, BIOS and UEFI Boot

Zir Blazer zir_blazer at hotmail.com
Tue Mar 22 07:57:34 UTC 2016


Switched from plain text to enriched text format. I ALWAYS forget when mailing here that the archive does not automatically warp lines if using plain text.
------------------------------------

I'm sure I asked this before and was expecting AW tehnical response, but instead he said "TL;DR" since it was in a ridiculous long mail with a multitude of other questions. But now I need a response since I plan to do this next week, so I have to try again.

I have readed this numerous times and still think its missing one or two examples to understand it better...
http://vfio.blogspot.com.ar/2014/08/whats-deal-with-vga-arbitration.html
As far that I managed to understand, the VGA Arbitration is an issue when you have two or more Devices that wants to use the legacy VGA protocol (Including both host and VM passthroughed Devices), which is a phase that usually only last until the OS loads the GPU Drivers and disables it. This is fine. However, there are some thing that are missing...

1) My current setup includes a Haswell platform with the Intel IGP, and a Radeon 5770 from before UEFI GOP became available, so it is legacy VBIOS only.
I understand that OVMF allows you to load a Video Card PCI Option ROM with UEFI GOP at VM POST time, in which case, you can see OVMF POSTing in the Monitor attached to the passthroughed Video Card, and that is called Primary VGA Passthrough. SeaBIOS can do the same loading a legacy VBIOS PCI Option ROM during POST. This phase last during the boot process until the OS GPU Drivers takes over, and at that point, both BIOS/UEFI Boot converge since the Drivers should disable VGA. The advantage of the pure UEFI Boot method is that VGA is not used during boot, so you don't count it at any point for VGA Arbitration purposes. However, this should apply for UEFI Boot in the host, too.
Since I do passthrough of the Radeon 5770 to a Windows VM, I will have to use SeaBIOS with legacy VBIOS and VGA for booting if doing Primary VGA Passthrough, but the host GPU has no need for VGA at all. The Intel IGP has available UEFI GOP support (At least since Ivy Bridge I think, but Haswell absolutely has it since that's my platform and I can confirm it), so I can do a pure UEFI Boot with no CSM for the host. VGA should not be used at all for the Intel IGP, which means that I have the legacy VGA protocol exclusively for the Radeon 5770 VM, so I should be able to create it using SeaBIOS and load the Video Card legacy VBIOS, and expect it to do Primary VGA Passthrough without having to deal with VGA Arbitration issues. Is this correct?
What makes me doubt is that you mention that the mechanism for Intel IGP Drivers to opt out of VGA Arbitration seems to be broken, but you blogged that before OVMF took over, and make no mention regardless if that applies to host BIOS Boot with Intel IGP, or BOTH BIOS and UEFI Boot. This is important to me since I have a Radeon 5770 from before they started to incorporate UEFI GOP support, so for Primary VGA Passthrough I have to use SeaBIOS.

2) What about Secondary VGA Passthrough? In the case of my current setup using Xen, the VM POST in a SDL window in the host screen, then switchs to the Monitor attached to the VM when Windows begins loading. This means that VGA isn't used either, since no VBIOS is loaded at all, through that also means that the Video Card is useless without the OS Drivers. So, can VFIO also do Secondary VGA Passthrough? I barely recall seeing it mentioned.
Truth be told, for as long as when we reach the convengence point after the OS loads the Drivers everything works as intended, how I get there seems like a detail that doesn't really matters. If I can use an emulated VGA for VM POST and boot, then switch to the passthroughed Video Card, I don't see it as a con of Secondary VGA Passthrough and would say that it is a slighty easier method. The main advantage being that it should be universal regardless if the host is doing BIOS or UEFI Boot, there is another VM using a passthroughed Video Card using legacy VBIOS, etc, since it simply doesn't care for those details.

3) What are the issues with Intel IGP Passthrough and VFIO? I'm not intending to do it since it would be worse than my Radeon 5770, but I'm curious. If I recall correctly, there were issues with it on Xen that required patches, since it seems that either it or the Drivers are expecting for the IGP to sit on PCI Address 00:02.0, so when doing IGP Passthrough, that address got reserved for it. Isn't possible to workaround this currently in standalone QEMU?  Can't see why you wouldn't be able to use -nodefaults, then plug in -device vfio-pci,bus=pcie.0,addr=02.0,host=00:02.0, or something like that. If it requires a PCIe Root Complex and can't be workarounded for the i440FX PCI Host Bridge, then maybe it works on Q35. I was intending to try this when I deploy standalone QEMU, but I would like to hear the technical explanation.

4) What should be the success chance of modding a VBIOS to add UEFI GOP support and use it for OVMF? At some point I was intending to do that mod for my Radeon 5770, but after tons of googling, I found other users claiming that it had a peculiar issue: The ROM was too small. It is a 64 KiB Flash ROM, while the resulting binary after performing the mod handily surpassed that size. But I think that I saw smaller cards like Radeons 5450 successfully modded adding UEFI GOP, through the guys that performed it were interesed in using them for MAC platforms or Windows 8 Fast Boot, no one was interesed in OVMF UEFI Boot.
Now, I know that QEMU supports a romfile= parameter that would allow me to replace the default PCI Option ROM with something else. Would it be possible to load a bigger file? Without the ROM size constrains, the UEFI GOP modding could actually be useful. Heck, it would be absolutely wonderful if someone can develop a way to consistently perform such mod on a given VBIOS, since it would be THE ABSOLUTE SAVIOR of all the legacy Video Cards users, stomping VGA Arbitration and anything else along the way. Heck, you don't even have to actually flash the ROM to try if it works or not. This sounds at least wonderful on paper, but would like to know if someone tried, succeded, or believes that being able to load a ROM is as good as I think it is.

I expect to get AW to reply this time, heh. Seriously, I can't make wall of texts smaller than this since I always try to explain context and my thoughs.  		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20160322/92f11a1e/attachment.htm>


More information about the vfio-users mailing list