qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 11/24] cpu/a15mpcore: Embed GICState


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v3 11/24] cpu/a15mpcore: Embed GICState
Date: Wed, 21 Aug 2013 22:05:29 +0100

On 20 August 2013 16:21, Andreas Färber <address@hidden> wrote:
> From: Andreas Färber <address@hidden>
>
> This covers both emulated and KVM GIC.

> @@ -35,40 +36,48 @@ typedef struct A15MPPrivState {
>      uint32_t num_cpu;
>      uint32_t num_irq;
>      MemoryRegion container;
> -    DeviceState *gic;
> +
> +    GICState gic;
>  } A15MPPrivState;

>  static void a15mp_priv_initfn(Object *obj)
>  {
>      SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>      A15MPPrivState *s = A15MPCORE_PRIV(obj);
> +    DeviceState *gicdev;
> +    const char *gictype = "arm_gic";
> +
> +    if (kvm_irqchip_in_kernel()) {
> +        gictype = "kvm-arm-gic";
> +    }
>
>      memory_region_init(&s->container, obj, "a15mp-priv-container", 0x8000);
>      sysbus_init_mmio(sbd, &s->container);
> +
> +    object_initialize(&s->gic, gictype);
> +    gicdev = DEVICE(&s->gic);
> +    qdev_set_parent_bus(gicdev, sysbus_get_default());
> +    qdev_prop_set_uint32(gicdev, "revision", 2);

So this is basically assuming that kvm-arm-gic and arm-gic
both have an instance struct of exactly the same size,
even though they're different classes (they happen to be
so at the moment, because neither adds extra state beyond
that needed by common base class). Is that really a good
idea? (If it ever becomes not true we get silent memory
corruption here...)

-- PMM



reply via email to

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