[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