On 01/03/2012 04:26 AM, Peter Maydell wrote:
On 3 January 2012 01:14, Anthony Liguori<anth...@codemonkey.ws> wrote:
Let's separate out what a user *should* do from what a user *can* do.
A user *should* have a command line syntax that reflects something that
makes sense to them. For instance, qemu-system-arm --machine beaglebone
I don't really care what the SoC or CPU in my beaglebone is. I just want to
emulate one.
But I do believe we want to make it possible for -device to create a CPU
even when it doesn't make sense.
So there's a couple of things here that fall in the "can't do that" bin:
1. trying to instantiate more than one device which has a CPU in it
(eg the default one from the machine/SoC model, and the second one
from the -device my-soc command line argument). (Basic QEMU limitation.)
But this is something that shouldn't be a limitation IMHO.
2. trying to replace an existing device in the machine model with a
different one which isn't connection-compatible with it.
So for the PC, I imagine we would have something like a
socket[0]:link<X86CPUState> property. You would set topology by setting
properties to make a single CPU appear to have multiple cores/threads.
For what you're getting at, you actually want to model the CPUs in QOM such that
you would have an ARM926 is-a ARMCPU is-a CPUCommon.
Then you could have the beagle machine have a link<ARM926>. If it always has a
single CPU, you make it a child<ARM926> and the user can't change it.
They can still set properties on the CPU so if there are flags they need to
tweak, they could.
For instance,
in a fully QOM world, trying to run a beagle machine with (say) a 926
CPU should fail to instantiate, because the 926 CPU won't have the right
set of irq/gpio inputs and outputs that the beagle machine needs to
connect up to. (This is the QOM equivalent of trying to ram a 486
into a Pentium CPU socket.)
I don't think we even have syntax for 2 at the moment except for the
weird special case of "-cpu foo".
Yeah, it's still not clear to me how much we want to model CPUs in QOM. We
could do it very simply and flat or model the individual CPUs as proper types
which lets you do fancier things with links.
Regards,
Anthony Liguori
-- PMM