qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH] arm boot: added QOM device definition


From: Alexander Graf
Subject: Re: [Qemu-devel] [RFC PATCH] arm boot: added QOM device definition
Date: Wed, 8 Feb 2012 13:41:21 +0100

On 08.02.2012, at 13:27, Paul Brook wrote:

>> 2012/2/8 Paul Brook <address@hidden>
>> 
>>>>> I suspect we want to replace the arm_load_kernel call with an
>>>>> arm_linux_loader device with appropriate properties.
>>>> 
>>>> Ok, so does this mean the machine model would still explicitly
>>>> instantiate the bootloader device?
>>> 
>>> Yes.  Bootloaders inherently have machine specific knowledge.  They need
>>> to know ram location, board ID, secondary CPU boot protocols, etc. 
>>> Requiring the user specify all these things separately from the rest of
>>> the machine description is IMO not acceptable.
>> 
>> So what im suggesting here is that machines export these properties to a
>> globally accessible location. Perhaps via the machine opts mechanism? Then
>> we are in a best of both worls situation where machine models do not need
>> bootloader awareness yet bootloaders can still query qemu for ram_size,
>> smp#, board_id and friends.
> 
> Hmm, I suppose this might work.  I'm not sure what you think the benefit of 
> this is though.  Fact is the machine needs to have bootloader awareness, 
> whether it be instantating an object or setting magic variables.
> Having devices rummage around in global state feels messy.  I'd much rather 
> use actual properties on the device.  IMO changing the bootloader is similar 
> complexity to (say) changing a UART. i.e. it's a board-level change not an 
> end-user level change.  Board-level changes are something that will happen 
> after QOM conversion, i.e. when we replace machine->init with a board config 
> file.


Yeah, basically the variable flow goes:

  vl.c -> machine_opts -> machine_init() -> device properties -> device_init()

So that the machine init function that creates the bootloader device enumerates 
the machine_opts (just like is done in Peter's patches) and then passes those 
on to the bootloader device as device properties.

The rationale behind machine opts is that they're basically a dynamic number of 
properties for the not-yet-existing machine object.


Alex




reply via email to

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