Re: [PATCH v2 19/20] hw/arm: versatilepb: Store boot info in the machine state
Philippe Mathieu-Daudé <[email protected]>
| Newsgroups | org.nongnu.qemu-devel,org.nongnu.qemu-arm |
|---|---|
| Message-ID | <[email protected]> |
On 16/8/26 15:12, Bin Meng wrote:
> arm_load_kernel() keeps a pointer to the boot info struct for the
> lifetime of the VM, so the struct logically belongs to the machine
> rather than to a file scoped static object.
>
> Give both machine types the same VersatileMachineState instance struct
> and store the boot info there.
>
> As in the xlnx-zcu102 and raspi machines, the boot info belongs to
> the machine rather than to a static object:
>
> 4d1ac883a7 ("hw/arm: xlnx-zcu102: Move arm_boot_info into XlnxZCU102")
> 0f15c6e338 ("hw/arm/raspi: Move arm_boot_info structure to RaspiMachineState")
>
> Signed-off-by: Bin Meng <[email protected]>
> ---
>
> hw/arm/versatilepb.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
> index c6991a52e6..520af79c80 100644
> --- a/hw/arm/versatilepb.c
> +++ b/hw/arm/versatilepb.c
> @@ -182,10 +182,16 @@ static void vpb_sic_init(Object *obj)
> peripherals and expansion busses. For now we emulate a subset of the
> PB peripherals and just change the board ID. */
>
> -static struct arm_boot_info versatile_binfo;
> +typedef struct VersatileMachineState {
> + MachineState parent;
> +
> + struct arm_boot_info bootinfo;
> +} VersatileMachineState;
>
> static void versatile_init(MachineState *machine, int board_id)
> {
> + /* versatilepb and versatileab embed the same state as first member */
> + VersatileMachineState *vms = (VersatileMachineState *)machine;
Use OBJECT_DECLARE_SIMPLE_TYPE() and the defined macro?