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).
Cheers, Ben.