[SeaBIOS] vga bios woes

Alex Williamson alex.williamson at redhat.com
Fri Jan 4 02:41:35 CET 2013


On Thu, 2013-01-03 at 19:13 -0500, Kevin O'Connor wrote:
> On Thu, Jan 03, 2013 at 02:31:43PM -0700, Alex Williamson wrote:
> > Hi,
> > 
> > I was playing a bit with vfio-based PCI device assignment of VGA in qemu
> > and I seem to be hitting a wall just trying to jump into the VGA BIOS.
> > I'm booting qemu with -vga none and assigning a radeon hd5450 via
> > vfio-pci with some extra code to handle passing legacy accesses through
> > to the host.  Legacy access hardly seems to matter though as the
> > experiment quickly dies when the vcpu starts executing zero'd memory.
> > gdb shows me something like this:
> > 
> [...]
> > 0x000fbd20:	66 ea 26 bd 28 00	ljmpw  $0x28,$0xbd26
> > 0x0000bd26:	00 00	add    %al,(%eax)
> 
> Everything looks okay except for here.  I'd guess it's likely just a
> reporting issue.  The code being run is actually at 0xfbd26 - as part
> of jumping into real-mode, the code has a segment offset (0xf0000)
> that must be added in.
> 
> > Trying to follow the code into __callrom(), I'm really confused how the
> > option rom init vector is actually used since callrom() passes the
> > option rom header offset to the init vector rather than anything
> > actually resembling the value of the init vector.  I really don't know
> > x86 though, so maybe I'm missing something.
> 
> The option rom should actually have code (eg, a jmp instruction) at
> offset 3 of the option rom.  So, the goal really is to jump to the 3rd
> byte of the option rom to execute it.

Yes!

(gdb) x/i 0xc0003
   0xc0003:	jmp    0xc0229

(gdb) x/10i 0xc0229
   0xc0229:	push   %ax
   0xc022b:	push   %cx
   0xc022d:	push   %dx
   0xc022f:	push   %bx
   0xc0231:	push   %bp
   0xc0233:	push   %si
   0xc0235:	push   %di
   0xc0237:	push   %cs
   0xc0238:	pop    %ds
   0xc0239:	mov    %eax,0xe8c01c2

Thanks for filling in that piece of the puzzle for me.  If the above is
just a reporting problem, how do I fix it so I can actually step through
the rom?  Thanks,

Alex




More information about the SeaBIOS mailing list