[SeaBIOS] [HELP] The program cause screen mess

eJim Lee lyjforjob at gmail.com
Sat Apr 18 04:12:04 CEST 2015


Hi all,
I have had two trouble.
There is a program named wbc and run it on WinXP that was on qemu+kvm+qxl+spice.
https://drive.google.com/file/d/0BwZHW2TTkEdRNm1rVUZwakxrQTQ/view?usp=sharing


######################################################
The first trouble:
The program cause screen mess, looked like:
https://drive.google.com/file/d/0BwZHW2TTkEdRajE5cUsyLWY0dU0/view?usp=sharing

I have debugged vgabios and found gfx_write_char have never arrived.
But looked nice after I commented this:
-------------------------------------------------------------------------------------------
// Write a character to the screen.
void
vgafb_write_char(struct cursorpos cp, struct carattr ca)
{
    struct vgamode_s *vmode_g = get_current_mode();
    if (!vmode_g)
        return;
    vgafb_set_swcursor(0);

    if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT) {
        //gfx_write_char(vmode_g, cp, ca);
        return;
    }

    void *dest_far = text_address(cp);
    if (ca.use_attr) {
        u16 dummy = (ca.attr << 8) | ca.car;
        SET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u16*)dest_far, dummy);
    } else {
        SET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u8*)dest_far, ca.car);
    }
}
-------------------------------------------------------------------------------------------
looked like:
https://drive.google.com/file/d/0BwZHW2TTkEdRMDhiNUY2emJFQm8/view?usp=sharing

The following commit also effect screen:
     f864b6023ed7b5d6fe8355e7ef2c6f78cd23ecad
     vgabios: Rewrite vgafb.c graphics operations to set of 4 standard
operators.
And before patched it, looked like:
https://drive.google.com/file/d/0BwZHW2TTkEdRQXZnWFBLaklwZTQ/view?usp=sharing


######################################################
The Second trouble:
Screen mess after I move mouse whenever I changed or commented
anything, looked like:
https://drive.google.com/file/d/0BwZHW2TTkEdRc3BCdXFZa013UEU/view?usp=sharing


######################################################
In fact, I have tried more:
On XP
----------------------------------
spice     qxl       ERROR
gtk         qxl       ERROR
spice     cirrus    ERROR
spice     VGA     ERROR
----------------------------------

On spice:
----------------------------------
xp       qxl      ERROR
win7   qxl      ERROR
dos     qxl      NICE     *
xp       cirrus  ERROR
xp       VGA   ERROR
----------------------------------
*: work perfectly.

On XP:
------------------------------------------------------------
lgpl_vgabios         qxl                 ERROR
lgpl_vgabios         cirrus             ERROR
seavgabios           qxl                 ERROR
seavgabios           cirrus             ERROR
vmware_vgabios  vmware_vga  WORKED *
------------------------------------------------------------
*: vmware_vgabios is from vmware workstation. That worked but only
support bpp 4 on desktop.


######################################################
I also tried LGPL VGABios and looked like before patch that commit.
I have found the program didn't use vgabios api, but vgabios effect the screen.


######################################################
This is my qemu command:
qemu-system-x86_64 \
-machine pc-i440fx-2.1,accel=kvm,usb=off \
-m 1024 \
-realtime mlock=off \
-smp 1,sockets=1,cores=1,threads=1 \
-no-user-config \
-nodefaults \
-rtc base=localtime \
-no-shutdown \
-global PIIX4_PM.disable_s3=1 \
-global PIIX4_PM.disable_s4=0 \
-boot strict=on \
-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
        -drive file=/root/ram/xp.append,if=none,id=drive-ide0-0-0,format=qcow2,cache=writeback,discard=unmap
\
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=2 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev pty,id=charserial1 \
-device isa-serial,chardev=charserial1,id=serial1 \
-chardev spicevmc,id=charchannel0,name=vdagent \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
\
-device usb-tablet,id=input0 \
-spice port=5900,addr=0.0.0.0,disable-ticketing,seamless-migration=on \
-device qxl-vga,id=video0,bus=pci.0,addr=0x2,romfile=/root/seabios/out/vgabios.bin
\
-device AC97,id=sound0,bus=pci.0,addr=0x4 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 \
-cpu 'SandyBridge,hv-relaxed=on' \
-netdev user,id=hostnet0 \
-device virtio-net-pci,netdev=hostnet0,id=net1,bus=pci.0,addr=0x7 \
        -chardev stdio,id=debugcon \
-device isa-serial,iobase=0x0402,chardev=debugcon \

Could anyone provide me some idea?

Thanks.
eJim Lee



More information about the SeaBIOS mailing list