Patchwork [RFC] reduce reported VGA framebuffer to 8 MiB

login
register
mail settings
Submitter Alon Levy
Date May 25, 2011, 1:53 p.m.
Message ID <1306331629-31041-1-git-send-email-alevy@redhat.com>
Download mbox | patch
Permalink /patch/97362/
State New
Headers show

Comments

Alon Levy - May 25, 2011, 1:53 p.m.
Without this windows xp guests set a 4 bits per pixel graphics mode.

With it we get the same behavior as with -vga std, that is a 32 bpp
graphics mode. This fits the size reported by hw/vga-pci.c .
---
Sending as RFC since I'm not sure if this is the right thing, nor that
it doesn't actually interfere with anything else. I did however do the testing
with and without mentioned in the patch comment and code comment.
---
 hw/qxl.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
Gerd Hoffmann - May 25, 2011, 2:06 p.m.
On 05/25/11 15:53, Alon Levy wrote:
> Without this windows xp guests set a 4 bits per pixel graphics mode.

Hmm?  Never seen this.  Details please.

cheers,
   Gerd
Alon Levy - May 25, 2011, 2:49 p.m.
On Wed, May 25, 2011 at 05:33:59PM +0300, Alon Levy wrote:
> On Wed, May 25, 2011 at 04:06:03PM +0200, Gerd Hoffmann wrote:
> > On 05/25/11 15:53, Alon Levy wrote:
> > >Without this windows xp guests set a 4 bits per pixel graphics mode.
> > 
> > Hmm?  Never seen this.  Details please.
> 
> When I start a windows xp guest with -vga qxl and no qxl driver installed I get
> a 16 color (4 bits) display mode, you notice it straight away because it's just ugly.
> 
> When I looked at the VBE calls the only difference between the calls done with -vga qxl
> and -vga std seemed to be the reported size (reported in 64K chunks, so for qxl the val
> is 0x400 by default, and for std vga it is 0x80). With this patch windows sets the right
> mode (32 bit color).
> 
> Actually it seems this patch make the qxl driver refuse to load, I'm trying to figure out
> why (or if in fact it's this patch).

It is the patch. An alternative that works with and without qxl driver, and fixes the problem
I reported, is to just change the VBE reported ram size to at most VGA_RAM_SIZE (== 8MiB).

> 
> > 
> > cheers,
> >   Gerd
> > 
>
Gerd Hoffmann - May 26, 2011, 6:50 a.m.
On 05/25/11 16:33, Alon Levy wrote:
> On Wed, May 25, 2011 at 04:06:03PM +0200, Gerd Hoffmann wrote:
>> On 05/25/11 15:53, Alon Levy wrote:
>>> Without this windows xp guests set a 4 bits per pixel graphics mode.
>>
>> Hmm?  Never seen this.  Details please.
>
> When I start a windows xp guest with -vga qxl and no qxl driver installed I get
> a 16 color (4 bits) display mode, you notice it straight away because it's just ugly.

Which qemu version?  Which seabios & vgabios version?

Windows xp booting in 4bit usually indicates VBE doesn't work at all, 
trying to enable vesafb in linux fails too then.

I havn't seen this for a *long* time.  Last time was a year or so back, 
while shaking out vgabios issues.  Especially I've never seen that with 
any qxl/spice stuff in upstream qemu.  Thats why I'm wondering where 
this comes from?

cheers,
    Gerd
Alon Levy - May 26, 2011, 7:11 a.m.
On Thu, May 26, 2011 at 08:50:01AM +0200, Gerd Hoffmann wrote:
> On 05/25/11 16:33, Alon Levy wrote:
> >On Wed, May 25, 2011 at 04:06:03PM +0200, Gerd Hoffmann wrote:
> >>On 05/25/11 15:53, Alon Levy wrote:
> >>>Without this windows xp guests set a 4 bits per pixel graphics mode.
> >>
> >>Hmm?  Never seen this.  Details please.
> >
> >When I start a windows xp guest with -vga qxl and no qxl driver installed I get
> >a 16 color (4 bits) display mode, you notice it straight away because it's just ugly.
> 
> Which qemu version?  Which seabios & vgabios version?

qemu is the spice v36 branch with some unrelated patches.
seabios + vgabios upstream (seabios with 0x9000000 size hack).

I can retest with qemu upstream.

> 
> Windows xp booting in 4bit usually indicates VBE doesn't work at
> all, trying to enable vesafb in linux fails too then.

VBE is working fine - attached are the VBE calls made in three cases:
 * -vga std
 * -vga qxl with the normal 64 MB framebuffer.
 * -vga qxl with 8 MB framebuffer (reported) (it's identical to the first)

Note that this is all without the qxl driver working, but just with a windows xp install
with no qxl drivers.

> 
> I havn't seen this for a *long* time.  Last time was a year or so
> back, while shaking out vgabios issues.  Especially I've never seen
> that with any qxl/spice stuff in upstream qemu.  Thats why I'm
> wondering where this comes from?

I know yonit saw it too, I think she is using different versions of the above.
I don't know what changed.

> 
> cheers,
>    Gerd
> 
>
VBE: write index=0x0 val=0xb0c0
VBE: read index=0x0 val=0xb0c0
VBE: write index=0x0 val=0xb0c5
VBE Bios $Id$

VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: read index=0xa val=0x80
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x3 val=0x20
VBE: write index=0x1 val=0x320
VBE: write index=0x2 val=0x258
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x41
VBE: read index=0x1 val=0x320
VBE: read index=0x3 val=0x20
VBE: read index=0x2 val=0x258
VBE: read index=0x3 val=0x20
VBE: read index=0x4 val=0x41
VBE: write index=0x0 val=0xb0c0
VBE: read index=0x0 val=0xb0c0
VBE: write index=0x0 val=0xb0c5
VBE Bios $Id$

VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: read index=0xa val=0x400
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x3 val=0x4
VBE: write index=0x1 val=0x320
VBE: write index=0x2 val=0x258
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x1
VBE: read index=0x1 val=0x320
VBE: read index=0x3 val=0x4
VBE: read index=0x2 val=0x258
VBE: read index=0x3 val=0x4
VBE: read index=0x4 val=0x1
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x3 val=0x4
VBE: write index=0x1 val=0x320
VBE: write index=0x2 val=0x258
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x1
VBE: read index=0x1 val=0x320
VBE: read index=0x3 val=0x4
VBE: read index=0x2 val=0x258
VBE: read index=0x3 val=0x4
VBE: read index=0x4 val=0x1
VBE: write index=0x0 val=0xb0c0
VBE: read index=0x0 val=0xb0c0
VBE: write index=0x0 val=0xb0c5
VBE Bios $Id$

VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: read index=0xa val=0x80
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x3 val=0x20
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: read index=0x4 val=0x0
VBE: write index=0x4 val=0x2
VBE: read index=0x1 val=0x640
VBE: write index=0x4 val=0x0
VBE: write index=0x4 val=0x0
VBE: write index=0x3 val=0x20
VBE: write index=0x1 val=0x320
VBE: write index=0x2 val=0x258
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x41
VBE: read index=0x1 val=0x320
VBE: read index=0x3 val=0x20
VBE: read index=0x2 val=0x258
VBE: read index=0x3 val=0x20
VBE: read index=0x4 val=0x41
Gerd Hoffmann - May 26, 2011, 7:44 a.m.
Hi,

>> Which qemu version?  Which seabios&  vgabios version?
>
> qemu is the spice v36 branch with some unrelated patches.
> seabios + vgabios upstream (seabios with 0x9000000 size hack).
>
> I can retest with qemu upstream.

Hmm, same here.

>>
>> Windows xp booting in 4bit usually indicates VBE doesn't work at
>> all, trying to enable vesafb in linux fails too then.
>
> VBE is working fine - attached are the VBE calls made in three cases:
>   * -vga std
>   * -vga qxl with the normal 64 MB framebuffer.
>   * -vga qxl with 8 MB framebuffer (reported) (it's identical to the first)
>
> Note that this is all without the qxl driver working, but just with a windows xp install
> with no qxl drivers.

Same here, works fine.  XP with SP3 btw, maybe this makes a difference.
Can you try to boot linux with vga=0x314?

cheers,
   Gerd
Alon Levy - May 26, 2011, 8:15 a.m.
On Thu, May 26, 2011 at 09:44:38AM +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> >>Which qemu version?  Which seabios&  vgabios version?
> >
> >qemu is the spice v36 branch with some unrelated patches.
> >seabios + vgabios upstream (seabios with 0x9000000 size hack).
> >
> >I can retest with qemu upstream.
> 
> Hmm, same here.
> 
> >>
> >>Windows xp booting in 4bit usually indicates VBE doesn't work at
> >>all, trying to enable vesafb in linux fails too then.
> >
> >VBE is working fine - attached are the VBE calls made in three cases:
> >  * -vga std
> >  * -vga qxl with the normal 64 MB framebuffer.
> >  * -vga qxl with 8 MB framebuffer (reported) (it's identical to the first)
> >
> >Note that this is all without the qxl driver working, but just with a windows xp install
> >with no qxl drivers.
> 
> Same here, works fine.  XP with SP3 btw, maybe this makes a difference.
> Can you try to boot linux with vga=0x314?

tested tinycore, looks like it sets VBE correctly without my patch, to a 16 bit color mode,
right after boot:
VBE: write index=0x3 val=0x10
VBE: write index=0x1 val=0x320
VBE: write index=0x2 val=0x258
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x41

And later Xvesa sets a 24bit color mode:
VBE: write index=0x3 val=0x18
VBE: write index=0x1 val=0x400
VBE: write index=0x2 val=0x300
VBE: write index=0x5 val=0x0
VBE: write index=0x4 val=0x41

And this is all while reporting the whole 64 MiB
VBE: read index=0xa val=0x400

But this just means linux handles it fine. I don't have a non SP3 handy but I'll try
to get one to test later. Not a really pressing issue.

> 
> cheers,
>   Gerd
> 
>

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index 9a0f588..f6ff9f2 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -1332,7 +1332,14 @@  static int qxl_init_primary(PCIDevice *dev)
     if (ram_size < 32 * 1024 * 1024) {
         ram_size = 32 * 1024 * 1024;
     }
-    vga_common_init(vga, ram_size);
+    /*
+     * windows xp guests don't like larger then VGA_RAM_SIZE (8 MiB),
+     * wrongly setting the display to 4 bit color depth. This fix doesn't
+     * affect native mode, where we have modes that require larger amounts
+     * of ram. (The maximum that VBE reports is 1600x1200 32 bit color depth
+     * which fits)
+     */
+    vga_common_init(vga, VGA_RAM_SIZE);
     vga_init(vga);
     register_ioport_write(0x3c0, 16, 1, qxl_vga_ioport_write, vga);
     register_ioport_write(0x3b4,  2, 1, qxl_vga_ioport_write, vga);