On 10/18/12 10:12, Gleb Natapov wrote:
> On Thu, Oct 18, 2012 at 03:38:37AM +0200, Laszlo Ersek wrote:
>> I have no idea why the UEFI-booted kernel tries to initialize the
>> display with Int10h, since that is a (VGA) BIOS interrupt.
> Looks like google knows something about it. Search for "INT 10" here:
> http://www.uefi.org/events/UEFI-Plugfest-WindowsBootEnvironment.pdf
> 
> * VGA support still requires INT 10h support
>  * Windows Server 2008 supports headless systems with no VGA

I did some digging.

I.

First, let's recall the debug message

    FRAMEBUF: DISP bInitPDEV failed - no valid modes

from [1]. Similar source code is (legally) available on the web, see [2]. 
Apparently it's FRAMEBUF.dll that should work (not VGA.dll), but it finds no 
acceptable mode.

II.

The current video modes provided by OVMF's GOP are 
(OvmfPkg/QemuVideoDxe/Initialize.c):

    ///
    /// Table of supported video modes
    ///
    QEMU_VIDEO_VIDEO_MODES  QemuVideoVideoModes[] = {
    //  {  640, 480, 8, 60, Crtc_640_480_256_60,  Seq_640_480_256_60,  0xe3 },
    //  {  800, 600, 8, 60, Crtc_800_600_256_60,  Seq_800_600_256_60,  0xef },
      {  640, 480, 32, 60, Crtc_640_480_32bpp_60,  Seq_640_480_32bpp_60,  0xef 
},
      {  800, 600, 32, 60, Crtc_800_600_32bpp_60,  Seq_800_600_32bpp_60,  0xef 
},
    //  { 1024, 768, 8, 60, Crtc_1024_768_256_60, Seq_1024_768_256_60, 0xef }
      { 1024, 768, 24, 60, Crtc_1024_768_24bpp_60, Seq_1024_768_24bpp_60, 0xef }
    //  { 1024, 768, 32, 60, Crtc_1024_768_32bpp_60, Seq_1024_768_32bpp_60, 
0xef }
    //  { 960, 720, 32, 60, Crtc_960_720_32bpp_60, Seq_1024_768_32bpp_60, 0xef }
    };

In summary, 640x480x32, 800x600x32, 1024x768x24. According to the link posted 
by Gleb above (slide 23), any mode in the four-element set {800x600, 1024x768} 
x {24bpp, 32bpp} is acceptable (if BGR). All 24bpp and 32bpp modes exported by 
OVMF are BGR, see QemuVideoCompleteModeInfo() and the PIXEL24_* macros.

Therefore according to the presentation above, two modes from the listed three 
should work. They don't.

III.

Other documentation exists! Page 5 of [3] says

    Either 1024x768 display resolution with 32-bit pixel color
    or 800x600 display resolution with 24-bit pixel color.

This narrows the acceptable set from 4 elements down to 2, and those are 
exactly not present in the QemuVideoVideoModes array.

Then, slide 9 of [4] restricts it to 1024x768x32 only. (When I tried to 
uncomment it in the array, it didn't work -- as I've just learned from Jordan, 
the register dumps "Crtc_1024_768_32bpp_60" and "Seq_1024_768_32bpp_60" are not 
finished for that mode.)

IV.

Regarding the big picture of after-ExitBootServices() video initialization, see 
forum / blog posts [5] [6] [7]. There appears to be a big difference in this 
aspect between Windows 7 (~ Windows 2008 R2) and Windows 8. (I assume the 
commenter(s) referred to Windows 8 as "Windows.Next" in May/Aug 2011.)


I'll try to see if I can connect to the win2k8r2sp1 guest with "rdesktop", but 
I believe we should get the 1024x768x32bpp mode working. ("We" as in "I don't 
have the slightest idea" :)) Alternatively, 800x600x24.

Additionally, IIRC Paolo suggested hacking in the VGA BIOS (from SeaBIOS I 
think?...) into OVMF as a CSM. I think it might not be co-distributable 
(SeaBIOS's licenses appear more restrictive than the 2-clause BSDL), but maybe 
worth an experiment. (Of course I don't know how to do that either, and the CSM 
spec looks intimidating.)

Thanks!
Laszlo


[1] http://article.gmane.org/gmane.comp.bios.tianocore.devel/763
[2] 
http://doxygen.reactos.org/dc/d8b/win32ss_2drivers_2displays_2vga__new_2screen_8c_source.html
[3] http://www.feishare.com/attachments/083_UEFIrequirements.pdf
[4] http://www.uefi.org/learning_center/UPFS11_P4_UEFI_GOP_AMD.pdf
[5] 
http://blogs.technet.com/b/askcore/archive/2011/05/31/installing-windows-7-on-uefi-based-computer.aspx#3447148
 -- comment from "Răzvan Corneliu C.R. VILT"
[6] http://forums.macrumors.com/showpost.php?p=13255278&postcount=47
[7] http://forums.macrumors.com/showpost.php?p=13331676&postcount=68

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to