[Qemu-devel] [RFC] Machine description as data
David Gibson
dwg at au1.ibm.com
Fri Feb 13 11:43:05 EST 2009
On Thu, Feb 12, 2009 at 11:26:46AM +0100, Markus Armbruster wrote:
> David Gibson <dwg at au1.ibm.com> writes:
>
> > On Wed, Feb 11, 2009 at 12:50:28PM -0600, Hollis Blanchard wrote:
> >> On Wed, 2009-02-11 at 16:40 +0100, Markus Armbruster wrote:
> > [snip]
> >> > I briefly examined the DT source format and the tree structure it
> >> > describes for the purpose of QEMU configuration. I decided against
> >> > using it in my prototype because I found it awfully low-level and
> >> > verbose for that purpose (I'm sure it serves the purpose it was designed
> >> > for just fine). Issues include:
> >> >
> >> > * Since the DT is designed for booting kernels, not configuring QEMU,
> >> > there's information that has no place in QEMU configuration, and
> >> > required QEMU configuration isn't there.
> >>
> >> What's needed is a "binding" in IEEE1275-speak: a document that
> >> describes qemu-specific nodes/properties and how they are to be
> >> interpreted.
> >>
> >> As an example, you could require that block devices contain properties
> >> named "qemu,path", "qemu,backend", etc.
> >
> > Yes, it shouldn't be hard to annotate an IEEE1275 style tree with
> > extra information for qemu's use.
>
> I don't feel up to that task, because I'm not really familiar with
> IEEE1275. Could you help out?
Uh.. up to some level at least.
> > As for the other direction, in some
> > cases it may be appropriate for qemu's device tree code to fill in
> > missing device tree properties, based on what the device emulation
> > code knows about itself.
>
> Agreed. Configuration should only contain what is actually
> configurable. Anything else that is needed by a consumer of the tree
> should be filled in automatically.
Right. I guess it will depend exactly what the balance is between
configuration and generated information whether we want to use a dts
with annontations in extra properties or a different tree format as
the root source format. Either way I think we want to use the fdt
format as the format that qemu and the guest firmware work with.
> >> > * Redundancy between node name and its device_type property.
> >
> > Note that "device_type" may not mean what you think. It describes
> > what methods the device support within the OF client interface. New
> > device trees that aren't linked to a full OF implementation with
> > client interface should generally omit device_type in most places
> > (there are a few special cases for compatibility with OSes that expect
> > device_type properties in certain places).
>
> I guess the ignorance I mentioned shows ;)
Heh, well, device_type is very commonly misunderstood for good
reason. It made sense in the original OF context, but in the context
of flat trees, the name is very misleading.
> >> > * Property "reg", which encodes address ranges, does so in terms of
> >> > "cells": #address-cells 32-bit words (big endian) for the address,
> >> > followed by #size-cells words for the size, where #address-cells and
> >> > #size-cells are properties of the enclosing bus. If this sounds
> >> > like gibberish to you, well, that's my point.
> >
> > #address-cells and #size-cells takes a little getting used to, but
> > it's really not that bad. It's just a way of representing the fact
> > that different busses have different sized address encodings.
>
> I didn't mean to say they are a bad idea for FDTs, just that they're on
> an awkward level of abstraction for QEMU configuration. There, I'd
> rather express a PCI address as "02:01.0" than as <0x00000220>.
> Translating text to binary is the machine's job, not the user's.
Ah, I see what you mean. Hrm, there are several possibilities here,
we'll have to see which works out best for your purposes.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
More information about the devicetree-discuss
mailing list