[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 5/7] pnv: Add cpu unrealize path
From: |
Greg Kurz |
Subject: |
Re: [Qemu-ppc] [PATCH 5/7] pnv: Add cpu unrealize path |
Date: |
Wed, 13 Jun 2018 11:16:32 +0200 |
On Wed, 13 Jun 2018 16:57:05 +1000
David Gibson <address@hidden> wrote:
> Currently we don't have any unrealize path for pnv cpu cores. We get away
> with this because we don't yet support cpu hotplug for pnv.
>
> However, we're going to want it eventually, and in the meantime, it makes
> it non-obvious why there are a bunch of allocations on the realize() path
> that don't have matching frees.
>
> So, implement the missing unrealize path.
>
> Signed-off-by: David Gibson <address@hidden>
> ---
Reviewed-by: Greg Kurz <address@hidden>
> hw/ppc/pnv_core.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index c9648fd1ad..c70dbbe056 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -192,6 +192,26 @@ err:
> error_propagate(errp, local_err);
> }
>
> +static void pnv_unrealize_vcpu(PowerPCCPU *cpu)
> +{
> + qemu_unregister_reset(pnv_cpu_reset, cpu);
> + object_unparent(cpu->intc);
> + cpu_remove_sync(CPU(cpu));
> + object_unparent(OBJECT(cpu));
> +}
> +
> +static void pnv_core_unrealize(DeviceState *dev, Error **errp)
> +{
> + PnvCore *pc = PNV_CORE(dev);
> + CPUCore *cc = CPU_CORE(dev);
> + int i;
> +
> + for (i = 0; i < cc->nr_threads; i++) {
> + pnv_unrealize_vcpu(pc->threads[i]);
> + }
> + g_free(pc->threads);
> +}
> +
> static Property pnv_core_properties[] = {
> DEFINE_PROP_UINT32("pir", PnvCore, pir, 0),
> DEFINE_PROP_END_OF_LIST(),
> @@ -202,6 +222,7 @@ static void pnv_core_class_init(ObjectClass *oc, void
> *data)
> DeviceClass *dc = DEVICE_CLASS(oc);
>
> dc->realize = pnv_core_realize;
> + dc->unrealize = pnv_core_unrealize;
> dc->props = pnv_core_properties;
> }
>
- Re: [Qemu-ppc] [PATCH 4/7] pnv: Clean up cpu realize path, (continued)
- [Qemu-ppc] [PATCH 1/7] spapr: Clean up cpu realize/unrealize paths, David Gibson, 2018/06/13
- [Qemu-ppc] [PATCH 5/7] pnv: Add cpu unrealize path, David Gibson, 2018/06/13
- [Qemu-ppc] [PATCH 3/7] pnv_core: Allocate cpu thread objects individually, David Gibson, 2018/06/13
- [Qemu-ppc] [PATCH 7/7] target/ppc, spapr: Move VPA information to machine_data, David Gibson, 2018/06/13
- [Qemu-ppc] [PATCH 6/7] target/ppc: Replace intc pointer with a general machine_data pointer, David Gibson, 2018/06/13