[PATCH qemu 02/38] aspeed: QOMify the CPU object and attach it to the SoC
Andrew Jeffery
andrew at aj.id.au
Mon Nov 21 21:59:13 AEDT 2016
On Fri, 2016-11-18 at 15:21 +0100, Cédric Le Goater wrote:
> Signed-off-by: Cédric Le Goater <clg at kaod.org>
With this I think we can finally drop
dc->cannot_destroy_with_object_finalize_yet = true;
from aspeed_soc_class_init() in hw/arm/aspeed_soc.c. See commit
ce5b1bbf624b exec: move cpu_exec_init() calls to realize functions
Reviewed-by: Andrew Jeffery <andrew at aj.id.au>
> ---
> hw/arm/aspeed_soc.c | 17 ++++++++++++++---
> include/hw/arm/aspeed_soc.h | 2 +-
> 2 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c
> index e14f5c217eab..db145e201451 100644
> --- a/hw/arm/aspeed_soc.c
> +++ b/hw/arm/aspeed_soc.c
> @@ -87,9 +87,13 @@ static void aspeed_soc_init(Object *obj)
> {
> AspeedSoCState *s = ASPEED_SOC(obj);
> AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
> + char *cpu_typename;
> int i;
>
> - s->cpu = cpu_arm_init(sc->info->cpu_model);
> + cpu_typename = g_strdup_printf("%s-" TYPE_ARM_CPU, sc->info->cpu_model);
> + object_initialize(&s->cpu, sizeof(s->cpu), cpu_typename);
> + object_property_add_child(obj, "cpu", OBJECT(&s->cpu), NULL);
> + g_free(cpu_typename);
>
> object_initialize(&s->vic, sizeof(s->vic), TYPE_ASPEED_VIC);
> object_property_add_child(obj, "vic", OBJECT(&s->vic), NULL);
> @@ -146,6 +150,13 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
> memory_region_add_subregion_overlap(get_system_memory(),
> ASPEED_SOC_IOMEM_BASE, &s->iomem, -1);
>
> + /* CPU */
> + object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
> + if (err) {
> + error_propagate(errp, err);
> + return;
> + }
> +
> /* VIC */
> object_property_set_bool(OBJECT(&s->vic), true, "realized", &err);
> if (err) {
> @@ -154,9 +165,9 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
> }
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->vic), 0, ASPEED_SOC_VIC_BASE);
> sysbus_connect_irq(SYS_BUS_DEVICE(&s->vic), 0,
> - qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ));
> + qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_IRQ));
> sysbus_connect_irq(SYS_BUS_DEVICE(&s->vic), 1,
> - qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_FIQ));
> + qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
>
> /* Timer */
> object_property_set_bool(OBJECT(&s->timerctrl), true, "realized", &err);
> diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
> index 5406b498d7ef..6f1b679c97b1 100644
> --- a/include/hw/arm/aspeed_soc.h
> +++ b/include/hw/arm/aspeed_soc.h
> @@ -27,7 +27,7 @@ typedef struct AspeedSoCState {
> DeviceState parent;
>
> /*< public >*/
> - ARMCPU *cpu;
> + ARMCPU cpu;
> MemoryRegion iomem;
> AspeedVICState vic;
> AspeedTimerCtrlState timerctrl;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20161121/b6382f15/attachment.sig>
More information about the openbmc
mailing list