spapr_realize_vcpu() is modified to call the CPU reset only after the
the intc presenter has been created.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
hw/ppc/spapr_cpu_core.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 3e4302c7d596..992f00da6540 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -234,13 +234,16 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
cpu_ppc_set_vhyp(cpu, PPC_VIRTUAL_HYPERVISOR(spapr));
kvmppc_set_papr(cpu);
- qemu_register_reset(spapr_cpu_reset, cpu);
- spapr_cpu_reset(cpu);
-
if (spapr_irq_cpu_intc_create(spapr, cpu, &local_err) < 0) {
- goto error_unregister;
+ goto error_intc_create;
}
+ /*
+ * FIXME: Hot-plugged CPUs are not reseted. Do it at realize.
+ */
+ qemu_register_reset(spapr_cpu_reset, cpu);
+ spapr_cpu_reset(cpu);
+
if (!sc->pre_3_0_migration) {
vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
cpu->machine_data);
@@ -248,8 +251,7 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
return;
-error_unregister:
- qemu_unregister_reset(spapr_cpu_reset, cpu);
+error_intc_create:
cpu_remove_sync(CPU(cpu));
error:
error_propagate(errp, local_err);
--
2.21.0
On 10/22/19 9:22 AM, Cédric Le Goater wrote:
> spapr_realize_vcpu() is modified to call the CPU reset only after the
> the intc presenter has been created.
>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> hw/ppc/spapr_cpu_core.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3e4302c7d596..992f00da6540 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -234,13 +234,16 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
> cpu_ppc_set_vhyp(cpu, PPC_VIRTUAL_HYPERVISOR(spapr));
> kvmppc_set_papr(cpu);
>
> - qemu_register_reset(spapr_cpu_reset, cpu);
> - spapr_cpu_reset(cpu);
> -
> if (spapr_irq_cpu_intc_create(spapr, cpu, &local_err) < 0) {
> - goto error_unregister;
> + goto error_intc_create;
> }
>
> + /*
> + * FIXME: Hot-plugged CPUs are not reseted. Do it at realize.
Typo: "reset" (past tense of reset is also reset).
> + */
> + qemu_register_reset(spapr_cpu_reset, cpu);
> + spapr_cpu_reset(cpu);
> +
> if (!sc->pre_3_0_migration) {
> vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
> cpu->machine_data);
> @@ -248,8 +251,7 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
>
> return;
>
> -error_unregister:
> - qemu_unregister_reset(spapr_cpu_reset, cpu);
> +error_intc_create:
> cpu_remove_sync(CPU(cpu));
> error:
> error_propagate(errp, local_err);
>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
On Tue, 22 Oct 2019 09:22:43 +0200
Cédric Le Goater <clg@kaod.org> wrote:
> spapr_realize_vcpu() is modified to call the CPU reset only after the
> the intc presenter has been created.
>
Maybe indicate why this change is needed ?
Anyway,
Reviewed-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> hw/ppc/spapr_cpu_core.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3e4302c7d596..992f00da6540 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -234,13 +234,16 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
> cpu_ppc_set_vhyp(cpu, PPC_VIRTUAL_HYPERVISOR(spapr));
> kvmppc_set_papr(cpu);
>
> - qemu_register_reset(spapr_cpu_reset, cpu);
> - spapr_cpu_reset(cpu);
> -
> if (spapr_irq_cpu_intc_create(spapr, cpu, &local_err) < 0) {
> - goto error_unregister;
> + goto error_intc_create;
> }
>
> + /*
> + * FIXME: Hot-plugged CPUs are not reseted. Do it at realize.
> + */
> + qemu_register_reset(spapr_cpu_reset, cpu);
> + spapr_cpu_reset(cpu);
> +
> if (!sc->pre_3_0_migration) {
> vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
> cpu->machine_data);
> @@ -248,8 +251,7 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
>
> return;
>
> -error_unregister:
> - qemu_unregister_reset(spapr_cpu_reset, cpu);
> +error_intc_create:
> cpu_remove_sync(CPU(cpu));
> error:
> error_propagate(errp, local_err);
© 2016 - 2026 Red Hat, Inc.