> -----Original Message----- > From: qemu-devel-bounces+jaeyong.yoo=samsung....@nongnu.org [mailto:qemu- > devel-bounces+jaeyong.yoo=samsung....@nongnu.org] On Behalf Of Laszlo > Ersek > Sent: Wednesday, May 14, 2014 7:56 PM > To: Jaeyong Yoo; qemu-devel@nongnu.org > Subject: Re: [Qemu-devel] Where is vga-rom mapped in guest system memory? > > On 05/14/14 06:01, Jaeyong Yoo wrote: > >> -----Original Message----- > >> From: qemu-devel-bounces+jaeyong.yoo=samsung....@nongnu.org > >> [mailto:qemu- > >> devel-bounces+jaeyong.yoo=samsung....@nongnu.org] On Behalf Of Laszlo > >> Ersek > >> Sent: Tuesday, May 13, 2014 10:55 PM > >> To: jaeyong....@samsung.com; qemu-devel@nongnu.org > >> Subject: Re: [Qemu-devel] Where is vga-rom mapped in guest system > memory? > >> > >> On 05/13/14 14:58, Jaeyong Yoo wrote: > >>> Hello qemu! > >>> > >>> > >>> > >>> I am currently writing a vga device emulator and need to debug vga- > bios. > >>> > >>> What I want is to set break-point on the entry of vga-bios and for > >>> this, > >>> > >>> I'm reading qemu source around pci device and rom-related memory > >>> regions > >>> > >>> to find out where should I set break point. And, sadly, got stuck. > >>> > >>> > >>> > >>> Could you give me any advice about the memory-mapped address of > >>> vga-rom or > >>> > >>> any pointers? > >> > >> Some. > >> > >> The vgabios binary is loaded from the file identified by the "romfile" > >> property of the VGA card that you select. For example, > >> > >> -device qxl-vga,romfile=... > >> > >> or > >> > >> -vga qxl \ > >> -global qxl-vga.romfile=... > >> > >> Of course the property has a default value for each VGA card. See the > >> > >> k->romfile = ... > >> > >> assignments in: > >> - cirrus_vga_class_init() -- vgabios-cirrus.bin > >> - qxl_primary_class_init() -- vgabios-qxl.bin > >> - vga_class_init() -- vgabios-stdvga.bin > >> > >> I think the oprom is loaded in > >> > >> pci_qdev_init() [hw/pci/pci.c] > >> pci_add_option_rom() > >> > >> The vgabios oprom is shadowed from ROM (pci address space) to RAM by > >> the SeaBIOS initialization code, and then POSTed: > >> > >> handle_post() [src/post.c] > >> make_bios_writable() [src/fw/shadow.c] > >> make_bios_writable_intel() > >> __make_bios_writable_intel() -- shadows vgabios in C segment too > >> dopost() [src/post.c] > >> maininit() > >> vgarom_setup() [src/optionroms.c] > >> init_pcirom() > >> init_optionrom() > >> callrom() > >> __callrom() > >> _rom_header_entry [vgasrc/vgaentry.S] > >> vga_post() [vgasrc/vgainit.c] > >> > >> You can instrument vga_post() in the SeaBIOS source > >> [vgasrc/vgainit.c], rebuild the vgabios binary, and load this binary > >> with the video card's romfile=... property on the qemu command line. > > > > Thanks for the answer. It is the exact code-path that I was looking > > for :-) > > > > I have one follow-up question. > > It looks like seabios (bios.bin) includes the vgabios (such as > > vga_post functions). And this bios.bin is not loaded as > > vgabios-stdvga.bin (the one that you mentioned in vga_class_init). I'm > > not clearly understanding the difference between vgabios inside bios.bin > and vgabios-stdvga.bin. > > Could you tell me the difference? > > bios.bin and vgabios.bin are separate build outputs of SeaBIOS. If you run > "make menuconfig" in the seabios directory and browse the options, it > should become clearer. (The build system should be discussed on the > seabios list, the maintainers can help you more than I can.) > > I recommend to study the following SRPM: > > https://www.kraxel.org/repos/jenkins/seabios/seabios.git-1.7.4- > 93.b113.g6ad7b5b.src.rpm > > the SPEC file should help (see the do_build() function and the various > build config files).
Thanks for the answer, Laszlo. I built the seabios in qemu and try to see the debug message of seabios. So, I checked the "Serial port debugging" option in Debugging section with the serial port base address 0x3f8. (Is this the correct value?) And, launch qemu with option "-serial stdio" but I don’t see any messages from seabios. If I want to see the debug message of seabios to the output console, what am I missing? My full command for launching qemu is the following: $ sudo x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 1024 -vga vmware -serial stdio ~/data/qemu-images/ubuntu-13.04-desktop.img Thanks, Jaeyong