On Di, 2014-08-26 at 10:22 +0200, Laszlo Ersek wrote: > When setting up the list of GOP modes offered on QEMU's stdvga ("VGA") > and > QXL ("qxl-vga") video devices, QemuVideoBochsModeSetup() filters those > modes against the available framebuffer size. (Refer to SVN r15288 / > git > commit ec88061e.) > > The VBE_DISPI_INDEX_VIDEO_MEMORY_64K register of both stdvga and QXL > is > supposed to report the size of the drawable, VGA-compatibility > framebuffer. Instead, up to and including qemu-2.1, this register > actually > reports the full video RAM (PCI BAR 0) size. > > In case of stdvga, this happens to be correct, because on that card > the > full PCI BAR 0 is usable for drawing; there is no difference between > "drawable framebuffer size" and "video RAM (PCI BAR 0) size". > > However, on the QXL card, only an initial portion of the video RAM is > suitable for drawing, as compatibility framebuffer; and the value > currently reported by VBE_DISPI_INDEX_VIDEO_MEMORY_64K overshoots the > valid size. Beyond the drawable range, the video RAM contains buffers > and > structures for the QXL guest-host protocol. > > Luckily, the size of the drawable QXL framebuffer can also be read > from a > register in the QXL ROM BAR (PCI BAR 2), so let's retrieve it from > there. > > Without this fix, OVMF offers too large resolutions on the QXL card > (up to > the full size of the video RAM). If a GOP client selects such a > resolution > and draws into the video RAM past the compatibility segment, then the > guest corrupts its communication structures (which is invalid guest > behavior). > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <ler...@redhat.com>
Reviewed-by: Gerd Hoffmann <kra...@redhat.com> ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel