On Sat, Oct 25, 2003 at 02:45:19PM +0200, Stefan Reinauer wrote:
> >Yes, I think so. I'm not sure exactly how much work is involved but
> >I will give it a go (it is not necessary to do a full OF implementation
> >right away...).
> >
> I can have a look on integrating the MOL OF functionality into
> BeginAgain, but for putting BeginAgain into MOL I'd prefer if you could
> try this first.
Certainly. I don't think putting the MOL OF code directly into
BeginAgain is such a good idea, at least not the current incarnation
of the of-mol code. My thought was to add the BeginAgain kernel
to of-mol and then gradually start to use it for OF client services
and for user interaction.
> >For MOL, the device tree is loaded from a config file (for MacOS, it is
> >essentially a copy of a "real" device tree). Bus probing and
> >similar things are not needed (although one could implement this
> >if one really wants to). Cloning the device tree at OF startup is
> >sufficient
> >(just like most parts of the device tree is hardcoded in ROM in most
> >machines).
> >
> Ah.. these device tree files I have seen. It's a really quick way of
> setting resources up for different kinds of systems. Are the different
> device trees needed for different purposes/machines?
Yes, different device trees are used for different purposes.
The Mac OS 9 device-tree originates from a B&W G3. Since only
certain PCI-bridges and interrupt controllers are suppoerted by
the OS, I have to use those in the device-tree. MacOS 9 also
expects certain legacy hardware to be present (the via-cuda for
instance).
In general, I prefer to use virtual MOL hardware rather then emulated
real-world hardware since this is much more efficient (the MOL OS side
driver just makes "system calls" to MOL rather than accessing hardware
through PCI register).
The Mac OS X device tree has essentially been built from scratch. It
contains more virtual MOL hardware than the Mac OS 9 tree. Since OSX
is a much more open architecture, it is possible to write custom MOL
drivers for things like interrupt controllers so there is no need
to emulate any hardware at all.
> Or is it just a matter of emulating the
> kind of machine that you have Mol running on?
No, MOL is completely hardware independent (except that 601 based
CPUs are unsupported).
> Do you have scripts for cloning the device tree in OpenFirmware?
No, not in OpenFirmware. Under linux, a copy of the
device tree is available under /proc/device-tree so it is just a matter
of reformatting things into a format more suitable for MOL.
> The device tree should actually be hardcoded for all onboard devices
> and only expansion cards like PCI should be dynamically added.
Yes, this is essentially what MOL does. Only a few minor tweaks are
done to the device tree at startup (MOL supports three parallell
virtual network cards, but typically only a single one is used).
> In BeginAgain I've implemented a plugin
> system that allows to emulate PCI cards in a simple manner. I planned to
> do the Framebuffer output this way, but since OpenBIOS lacks a PCI
> driver and a framebuffer driver you get nothing but a black window that
> you can write to with lowlevel functions..
>
> If you don't disagree I'd like to move this discussion to
> openbios(a)lists.openbios.org in future.
Sure.
/Samuel