[SeaBIOS] [Qemu-devel] [PATCH 1/8] Support PCI based option rom loading
benh at kernel.crashing.org
Sun Dec 20 22:23:37 CET 2009
On Sun, 2009-12-20 at 19:01 +0100, Alexander Graf wrote:
> Yes. The Alpha for example used stock VGABIOSes. IIRC Sparc has its
> own graphics anyways and I don't know about the others, but I suspect
> they either use x86 VGABIOSes or no VGABIOSes.
> Macs are different though. IIRC they have a normal VGA interface in
> ppc logic, but I might be wrong. Maybe it's also some OpenFirmware
> stuff. They definitely don't have an x86 VGABIOS in the graphics
> card's rom slot, but something different.
> Since we're using the Cirrus on Macs, I guess we'd need a Cirrus PPC
> VGABIOS - phew.
> Other PPCs on the other hand, such as the Powerstation, use x86 roms.
> Oh well, let's just export the x86 one for now but use video.x for
> video output. Looks like there'd be quite a lot of work involved in
> getting it aligned to real world mac hw :-(.
Hrm, I missed the beginning of the story :-) But basically here's what
things look like vs. option ROMs on powerpc:
- Most Open Firmware based machines (pSeries and Macs) can load some
f-code firmware from there (tokenized forth). The f-code is platform
agnostic (in theory, Apple did play games in that area) and so in theory
the same f-code would work on, for example, an x86 with Open Firmware
(if you had a slot on the OLPC you could try :-)
- That f-code firmware is used for whatever initializations the card
need (for example, video cards generally need specific inits before
being usable at all by the OS, at least older ones do). It can create
additional properties in the device-tree as well.
- On Macs specifically, they have a trick consisting of putting a
powerpc MacOS video driver in there, in the form of one big property
(AAPL,NDRV iirc). This is a MacOS 7/8/9 style PEF driver but generally
compiled and linked to work in a very limited environment for which OS X
provides a sandbox, and which provides basic monitor detection and mode
settings. video.x is such a driver (I wrote it :-) though I don't
remember precisely whether the video.x file is the raw NDRV or the
packaged f-code which contains the ndrv).
- Some powerpc machines (Pegasos, Efika, PowerStation, ... ) also have
an x86emu variant in their firmware that can load a VGA ROM and use it
to setup some kind of boot display for the firmware.
- An option ROM can contain multiple images :-) IE. It can contain
-both- the x86 style ROM and the Open Firmware style f-code...
Now, in the light of the above, what is interesting to do on qemu ?
It all depends how "close" we consider OpenBIOS to be from qemu. If
"close" then we don't need any of the f-code stuff. OpenBIOS could use
some private calls to inside qemu and be done with it, including for
sucking the video.x MacOS driver if the machine "profile" is a Mac (see
the discussions on using the device-tree to define machines inside qemu,
I believe that would be a great improvement).
A VGA ROM is not really useful past the firmware stage on ppc, as
generally X is built without Int10 and we cannot really do anything with
it appart from the FW initializing the card. This is not true of real
ATI or nVidia cards because their driver uses tables in the VGA ROM for
various things but that isn't necessarily very useful for qemu. But on
the other hand, it doesn't hurt to have it there.
We should also look formward to native flat device tree booting without
OpenBIOS in which case we probably don't care much (though again a VGA
ROM might prove useful if whatever we boot has an x86emu variant).
More information about the SeaBIOS