qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] hw/core/null-machine: Add the possibility to in


From: Thomas Huth
Subject: Re: [Qemu-devel] [PATCH] hw/core/null-machine: Add the possibility to instantiate a CPU, RAM and kernel
Date: Mon, 16 Jan 2017 08:59:33 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0

On 14.01.2017 12:03, Laurent Vivier wrote:
> Le 14/01/2017 à 07:51, Thomas Huth a écrit :
>> Sometimes it is useful to have just a machine with CPU and RAM, without
>> any further hardware in it, e.g. if you just want to do some instruction
>> debugging for TCG with a remote GDB attached to QEMU, or run some embedded
>> code with the "-semihosting" QEMU parameter. qemu-system-m68k already
>> features a "dummy" machine, and xtensa a "sim" machine for exactly this
>> purpose.
>> All target architectures have nowadays also a "none" machine, which would
>> be a perfect match for this, too - but it currently does not allow to add
>> CPU, RAM or a kernel yet. Thus let's add these possibilities in a generic
>> way to the "none" machine, too, so that we hopefully do not need additional
>> "dummy" machines in the future anymore (and maybe can also get rid of the
>> already existing "dummy"/"sim" machines one day).
>> Note that the default behaviour of the "none" machine is not changed, i.e.
>> no CPU and no RAM is instantiated by default. You've explicitely got to
>> specify the CPU model with "-cpu" and the amount of RAM with "-m" to get
>> these new features.
> 
> Did you try to use the generic-loader to load the kernel?
> 
> Something like "-device loader,file=vmlinux" instead of adding this part
> in the none machine?

It does not work by default - because we need a way to set the CPU's
program counter to the entry point of the ELF file.
But I think the users also expect the "-kernel" parameter to be working,
so I think we should add the loader code in null-machine.c anyway.

> Perhaps we could also add a cpu this way, as they are already available
> in the device list for the machine that allows hotplug.

The only machine that allows hot-plugging of CPUs with the device
interface is ppc64 spapr, as far as I know. So this does not help with
embedded boards like m68k or xtensa. Also I think you need some
additional magic like a bus where the CPUs could be attached, and maybe
firmware interfaces, so this does not fit the idea of an embedded board
very well.

> With the same idea, we could also have a "-device ram,size=XXX" to add
> ram (not DIMM).

That might be useful indeed, but mainly because some embedded boards
expect some additinal RAM at a higher, non-zero addresses, too.

> I think is is the idea behind the none machine:
[...]
>     This
>     also provides a mode that we can use in the future to construct machines
>     entirely through QMP commands.

We're still very far away from the possibility that everything could be
constructed on the fly. (Embedded) CPUs, RAM, buses ... all that is not
really pluggable yet. So I think my patch is a good first step into this
direction to get at least an initial playground for a machine that can
be defined by the user.

 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]