On Tue, Jun 07, 2022 at 09:37:21AM -0600, Kevin Locke wrote:
> Hi All,
> 
> With QEMU 7.0.0 and SeaBIOS 1.16.0, virtual machines with a PCIe
> graphics card connected to a PCIe Root Port, rather than the Root
> Complex, as recommended by the QEMU PCI Express Guidelines[1], are
> unable to use VESA BIOS Extensions display modes.  For example,

> Am I correct in assuming this is a limitation of SeaVGABIOS?

Well, sort of.  There are two ways to reach the registers needed for
the extended display modes, via ioports 0x01ce,0x01cf or via mmio bar
(see docs/specs/standard-vga.txt in qemu source tree).

The ioport access is not forwarded over pci(e) bridges, the special
exception bit for vga register access applies to the classic vga
registers only not the vbe registers.

vgabios functions must be able to run in real mode, so it uses the
ioports, because they are easily reachable.

ovmf driver runs in 32bit or 64bit anyway, so using the mmio bar is no
problem and the driver prefers that if available.  Therefore it is
possible to plug vga devices into a pcie root port (although I think
it doesn't work for qxl due to mmio bar not being available there).

> If it's unlikely to change soon, would
> it make sense for me to propose documenting this limitation in the
> QEMU PCI Express Guidelines?

Yes, it makes sense to add an exception note there.  VGA devices should
be placed on the root bus to make sure they are fully functional
(libvirt does that by default btw).

When using UEFI it is possible to pick a device without vga
compatibility (i.e. bochs-display or virtio-gpu-pci).  The legacy vga
stuff (text mode and lowres graphics) wouldn't be used anyway ...

take care,
  Gerd

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to