From: Paul Brook <paul@codesourcery.com>
To: Rob Landley <rob@landley.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Config file support
Date: Tue, 24 Oct 2006 00:33:49 +0100 [thread overview]
Message-ID: <200610240033.51392.paul@codesourcery.com> (raw)
In-Reply-To: <200610231822.59310.rob@landley.net>
> > Not really. I guess a generic key/value pair is sufficient for most
> > things (base address, model number, etc).
>
> The things are what I was asking about. Assuming that QEMU has support for
> the appropriate processor type, support for the right bus controller(s),
> and support for various devices that can attach to that bus, what other
> information is needed to completely specify a machine? (You mention IRQ
> lines and DMA channels...)
A good first guess is to look at the the *_init functions in the hw/
directory. They should tell you what parameters a device has.
> I'm still a little fuzzy about basic questions like "How much information
> is in 'processor type'?" (Does that include cache size? Floating point
> support? Has mmu flag? Are these separate processors with their own
> names, or are they options to a base processor type?)
>
> I'm generally not worried about parsing data files being hard, I just don't
> currently know what's involved in adding a new machine type to QEMU anyway.
> don't know what all the data _is_ let alone what to do with it once it's
> read in.
This is why I suggested a *generic* key/value system. Basically each "device"
registers itself with qemu, and provides an initialisation function and a
list of properties. qemu doesn't know the meaning of a particular key, just
its name and type (number/string/whatever).
The machine config file instantiates particular devices (explicitly or
implicitly one per section). qemu validates+parses the keys in the config
file against the list provided by the device. Then the init function is
called.
> Last I checked, each processor was in its own directory (at the top level,
> not under any kind of processors/ directory),
qemu doesn't support different CPUs in the same machine. That's a whole other
problem.
> the devices were under "hw",
> and the motherboards gluing together a bunch of devices were _also_ under
> "hw".
>...
> Currently, this is all hard-wired together into a big blob. Step one of
> untangling it would probably be moving the device files and the motherboard
> files to separate directories...
My intention is that a machine config file would remove the "motherboard" bits
altogether. ie. the config file describes everything that pc_init_1 does. The
first half of pc.c would remain because that's device emulation.
For things like network/serial/disks we need to figure out how to make the
machine description adapt to the config the user requested. Proably want to
replace the fixed tables eg. bs_table with some mechanism for
identifying/requesting disks by name.
Likewise if you identify PCI busses and IRQs by name/location this provides a
way for the user to wire them up.
Most of the code is already fairly well separated. It's just that the glue is
hardcoded in C and parameters passed as function arguments rather than being
something that is determined at runtime.
Take the Integrator/CP board as an example. I'd expect the machine config to
look something like:
ram {base=0; size=RAM_SIZE, physaddr=0}
ram {base=0x80000000; size=RAM_SIZE, physaddr=0}
integrator_core{ram_size=RAM_SIZE};
arm_cpu_pic {cpu_index=0, pic_name="CPU0"}
integrator_pic {pic_name="PRIMARY", base=0x14000000,parent="CPU0",
parent_irq=0, parent_fiq=1}
integrator_pic {pic_name="SECONDARY", base=0xca000000, pic="PRIMARY",irq=0,
fiq=1}
integrator_pit{base=0x13000000, pic="PRIMARY", irq=5}
pl011{base=0x16000000, name="serial0", pic="PRIMARY", irq=1}
etc.
The syntax I just made up, and there are the issues I mentioned above, but
hopefully you get the idea.
Paul
next prev parent reply other threads:[~2006-10-23 23:34 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-20 17:55 [Qemu-devel] Config file support Chuck Brazie
2006-10-21 0:12 ` Johannes Schindelin
2006-10-21 10:00 ` Ricardo Almeida
2006-10-21 11:40 ` Stefan Weil
2006-10-22 9:51 ` Johannes Schindelin
2006-10-22 17:01 ` Flavio Visentin
2006-10-22 17:19 ` Martin Guy
2006-10-22 18:27 ` Paul Brook
2006-10-23 6:33 ` [Qemu-devel] " Antti P Miettinen
2006-10-23 20:01 ` [Qemu-devel] " Rob Landley
2006-10-23 20:29 ` Paul Brook
2006-10-23 22:22 ` Rob Landley
2006-10-23 23:33 ` Paul Brook [this message]
2006-10-24 9:04 ` Rob Landley
2006-10-24 10:47 ` Flavio Visentin
2006-10-24 12:05 ` Christian MICHON
2006-10-24 16:46 ` Blue Swirl
2006-10-24 20:38 ` Christian MICHON
2006-10-24 23:32 ` Rob Landley
2006-10-25 8:20 ` Johannes Schindelin
2006-10-24 0:11 ` andrzej zaborowski
2006-10-24 0:34 ` Paul Brook
2006-10-24 0:12 ` Re[2]: " Paul Sokolovsky
2006-10-24 0:36 ` Paul Brook
2006-10-24 1:38 ` Re[2]: " Paul Sokolovsky
2006-10-24 2:31 ` Paul Brook
2006-10-24 8:37 ` Christian MICHON
2006-10-24 23:28 ` Rob Landley
2006-10-25 0:18 ` Re[2]: " Paul Sokolovsky
2006-10-25 15:01 ` Paul Brook
2006-10-26 14:31 ` Rob Landley
2006-10-27 20:00 ` Re[2]: " Paul Sokolovsky
2006-10-27 19:33 ` Paul Sokolovsky
2006-10-28 0:08 ` Paul Brook
2006-10-28 1:46 ` Re[2]: " Paul Sokolovsky
[not found] ` <20061025153503.GB5673@aon.at>
2006-10-28 22:24 ` busybox "ps ax" woes, was: " Paul Sokolovsky
2006-10-24 23:28 ` Rob Landley
2006-10-21 18:00 ` David Baird
-- strict thread matches above, loose matches on Subject: below --
2006-10-23 18:25 [Qemu-devel] config " Ben Taylor
2006-10-18 18:42 Chuck Brazie
2006-10-22 21:51 ` Rob Landley
2006-10-23 10:58 ` Christian MICHON
2006-10-23 11:48 ` Jan Marten Simons
2006-10-23 12:24 ` Paul Brook
2006-10-23 17:50 ` K. Richard Pixley
2006-10-23 20:39 ` Rob Landley
2006-10-23 20:58 ` Paul Brook
2006-10-23 21:01 ` K. Richard Pixley
2006-10-23 21:17 ` M. Warner Losh
2006-10-23 20:42 ` André Braga
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=200610240033.51392.paul@codesourcery.com \
--to=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=rob@landley.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.