Skip to content

Commit

Permalink
pseries: Clean up error handling of spapr_cpu_init()
Browse files Browse the repository at this point in the history
Currently spapr_cpu_init() is hardcoded to handle any errors as fatal.
That works for now, since it's only called from initial setup where an
error here means we really can't proceed.

However, we'll want to handle this more flexibly for cpu hotplug in future
so generalize this using the error reporting infrastructure.  While we're
at it make a small cleanup in a related part of ppc_spapr_init() to use
error_report() instead of an old-style explicit fprintf().

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
  • Loading branch information
dgibson committed Jan 30, 2016
1 parent f9ab1e8 commit 569f496
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions hw/ppc/spapr.c
Expand Up @@ -1625,7 +1625,8 @@ static void spapr_boot_set(void *opaque, const char *boot_device,
machine->boot_order = g_strdup(boot_device);
}

static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu)
static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
Error **errp)
{
CPUPPCState *env = &cpu->env;

Expand All @@ -1643,7 +1644,13 @@ static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu)
}

if (cpu->max_compat) {
ppc_set_compat(cpu, cpu->max_compat, &error_fatal);
Error *local_err = NULL;

ppc_set_compat(cpu, cpu->max_compat, &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
}
}

xics_cpu_setup(spapr->icp, cpu);
Expand Down Expand Up @@ -1812,10 +1819,10 @@ static void ppc_spapr_init(MachineState *machine)
for (i = 0; i < smp_cpus; i++) {
cpu = cpu_ppc_init(machine->cpu_model);
if (cpu == NULL) {
fprintf(stderr, "Unable to find PowerPC CPU definition\n");
error_report("Unable to find PowerPC CPU definition");
exit(1);
}
spapr_cpu_init(spapr, cpu);
spapr_cpu_init(spapr, cpu, &error_fatal);
}

if (kvm_enabled()) {
Expand Down

0 comments on commit 569f496

Please sign in to comment.