On Wed, Jun 9, 2010 at 2:30 PM, Paul Brook <p...@codesourcery.com> wrote: >> >> Because at some point the base tree will have to be written in C. >> > >> > No. You can start with a completely empty machine. >> > We don't/shouldn't need any machine specific C code. >> >> I think you're missing the argument. I should be possible to create a >> machine entirely from a FDT or via -device options. >> >> However, to continue to support the interfaces that we support today, it >> will be necessary to have C code that manipulates a base device tree. >> >> When a user specifies '-M pc -hda foo.img' verses '-M versatilepb -hda >> foo.img', the equivalent are two very different operations on a device >> tree. The former adds an ide disk to the default controller and the >> later potentially creates a new scsi bus and then adds a disk to a >> specific bus. > > AFAICS the current commandline options only result in simple addition of > devices. They might add slightly different devices in slightly different > places, but that's easy to accommodate by having the machine define a few > standard device/bus IDs. > > IMO it's even more lame if -hda shops working when you supply a device tree.
The tree supplied by the user should label a bus node with a property 'QEMU,hda'. The C version (called by the board) would be something like setprop("/i440fx/pci.0/ide.0", "QEMU,hda"). QEMU should search the device tree for such labels at startup.