qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alexander Graf <agraf@suse.de>
Cc: Blue Swirl <blauwirbel@gmail.com>,
	seabios@seabios.org, Gerd Hoffmann <kraxel@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 1/8] Support PCI based option rom loading
Date: Mon, 21 Dec 2009 08:23:37 +1100	[thread overview]
Message-ID: <1261344217.2173.122.camel@pasglop> (raw)
In-Reply-To: <2C5D8962-8D5A-418A-AC26-E6271EA7D8B3@suse.de>

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.

  parent reply	other threads:[~2009-12-20 21:24 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-18 11:01 [Qemu-devel] [PATCH 0/8] option rom loading overhaul Gerd Hoffmann
2009-12-18 11:01 ` [Qemu-devel] [PATCH 1/8] Support PCI based option rom loading Gerd Hoffmann
2009-12-19 10:57   ` Blue Swirl
2009-12-20 15:34     ` Anthony Liguori
2009-12-20 17:02       ` Blue Swirl
2009-12-20 17:18         ` Alexander Graf
2009-12-20 17:55           ` Anthony Liguori
2009-12-20 18:01             ` Alexander Graf
2009-12-20 18:24               ` Andreas Färber
2009-12-20 18:53                 ` Blue Swirl
2009-12-20 21:24                   ` Benjamin Herrenschmidt
2009-12-20 21:23               ` Benjamin Herrenschmidt [this message]
2009-12-18 11:01 ` [Qemu-devel] [PATCH 2/8] pci romfiles: add property, add default to PCIDeviceInfo Gerd Hoffmann
2010-01-11 21:18   ` [Qemu-devel] [RFC] New naming rules for GPXE romfiles Stefan Weil
2010-01-11 21:34     ` Anthony Liguori
2010-01-12 10:23     ` Kevin Wolf
2009-12-18 11:01 ` [Qemu-devel] [PATCH 3/8] fw_cfg: make calls typesafe Gerd Hoffmann
2009-12-18 11:01 ` [Qemu-devel] [PATCH 4/8] fw_cfg: add API for file transfer Gerd Hoffmann
2009-12-19 12:06   ` Blue Swirl
2009-12-20  8:42   ` [Qemu-devel] Re: [SeaBIOS] " Gleb Natapov
2009-12-18 11:01 ` [Qemu-devel] [PATCH 5/8] roms: use new fw_cfg file xfer support Gerd Hoffmann
2009-12-20  8:45   ` [Qemu-devel] Re: [SeaBIOS] " Gleb Natapov
2009-12-18 11:01 ` [Qemu-devel] [PATCH 6/8] roms: remove option rom packing logic Gerd Hoffmann
2009-12-18 11:01 ` [Qemu-devel] [PATCH 7/8] updated seabios binary for testing convinience Gerd Hoffmann
2009-12-18 11:01 ` [Qemu-devel] [PATCH 8/8] debug: enable bios messages Gerd Hoffmann
2009-12-18 14:35 ` [Qemu-devel] Re: [SeaBIOS] [PATCH 0/8] option rom loading overhaul Anthony Liguori
2009-12-18 16:34   ` Gerd Hoffmann
2009-12-18 16:42     ` Anthony Liguori
2009-12-18 17:03       ` Gerd Hoffmann
2009-12-18 17:12         ` Anthony Liguori
2009-12-19  1:48           ` Kevin O'Connor
2009-12-19  3:07             ` Anthony Liguori
2009-12-18 17:14         ` Anthony Liguori
2009-12-18 18:04           ` Gerd Hoffmann
2009-12-18 19:41         ` Sebastian Herbszt
2009-12-18 19:53           ` Anthony Liguori
2009-12-18 20:10             ` Sebastian Herbszt
2009-12-20  8:38 ` Gleb Natapov
2009-12-20 14:43   ` Anthony Liguori
2009-12-20 14:52     ` Gleb Natapov
2009-12-20 14:58       ` Anthony Liguori
2009-12-20 15:07         ` Gleb Natapov
2009-12-20 15:11           ` Anthony Liguori
2009-12-20 15:20             ` Avi Kivity
2009-12-20 15:31               ` Anthony Liguori
2009-12-20 15:35                 ` Avi Kivity
2009-12-22 13:04               ` Paul Brook
2009-12-22 13:09                 ` Avi Kivity
2009-12-22 15:11                 ` Anthony Liguori
2009-12-22 15:54                   ` Paul Brook
2009-12-22 16:16                     ` Anthony Liguori
2009-12-20 15:23             ` Gleb Natapov
2009-12-20 15:28               ` Anthony Liguori
2009-12-20 15:33                 ` Gleb Natapov
2009-12-20 15:39                   ` Anthony Liguori
2009-12-20 15:52                     ` Gleb Natapov
2009-12-20 16:08                       ` Blue Swirl
2009-12-20 16:15                         ` Gleb Natapov
2009-12-20 16:23                           ` Blue Swirl
2009-12-20 17:48                       ` Anthony Liguori
2009-12-21  1:59                         ` Kevin O'Connor
2009-12-21  7:32                           ` Gleb Natapov
2009-12-21 16:40                             ` Anthony Liguori
2009-12-21 16:43                               ` Gleb Natapov
2009-12-21 17:26                                 ` Anthony Liguori
2009-12-21 17:43                                   ` Gleb Natapov
2009-12-21 18:24                                     ` [Qemu-devel] Re: Re: [SeaBIOS] [PATCH 0/8] option rom loadingoverhaul Sebastian Herbszt
2009-12-21 18:36                                       ` Gleb Natapov
2009-12-21 19:28                                         ` Sebastian Herbszt
2009-12-21 19:57                                           ` Gleb Natapov
2009-12-21 19:17                                       ` [Qemu-devel] " Anthony Liguori
2009-12-21 19:39                                         ` Sebastian Herbszt
2009-12-21 19:53                                           ` Gleb Natapov
2009-12-21 20:16                                             ` Sebastian Herbszt
2009-12-22  7:58                                               ` Gleb Natapov
2009-12-22 14:57                                                 ` Anthony Liguori
2009-12-21 19:48                                         ` Gleb Natapov
2009-12-21 19:13                                     ` [Qemu-devel] Re: [SeaBIOS] [PATCH 0/8] option rom loading overhaul Anthony Liguori
2009-12-21 19:43                                       ` Gleb Natapov
2009-12-21 23:54                                         ` Anthony Liguori
2009-12-22 20:50                                           ` [Qemu-devel] Re: Re: [SeaBIOS] [PATCH 0/8] option rom loadingoverhaul Sebastian Herbszt
2009-12-21  7:40                         ` [Qemu-devel] Re: [SeaBIOS] [PATCH 0/8] option rom loading overhaul Gleb Natapov
2009-12-21 17:27                           ` Michael S. Tsirkin
2010-01-12  4:48                   ` Jamie Lokier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1261344217.2173.122.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=agraf@suse.de \
    --cc=blauwirbel@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).