pseries: Clean up error handling in xics_system_init()

Use the error handling infrastructure to pass an error out from
try_create_xics() instead of assuming &error_abort - the caller is in a
better position to decide on error handling policy.

Also change the error handling from an &error_abort to &error_fatal, since
this occurs during the initial machine construction and could be triggered
by bad configuration rather than a program error.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
David Gibson 2016-01-20 12:58:48 +11:00
parent adf9ac50db
commit 1e49182d05

View File

@ -112,7 +112,7 @@ static XICSState *try_create_xics(const char *type, int nr_servers,
} }
static XICSState *xics_system_init(MachineState *machine, static XICSState *xics_system_init(MachineState *machine,
int nr_servers, int nr_irqs) int nr_servers, int nr_irqs, Error **errp)
{ {
XICSState *icp = NULL; XICSState *icp = NULL;
@ -131,7 +131,7 @@ static XICSState *xics_system_init(MachineState *machine,
} }
if (!icp) { if (!icp) {
icp = try_create_xics(TYPE_XICS, nr_servers, nr_irqs, &error_abort); icp = try_create_xics(TYPE_XICS, nr_servers, nr_irqs, errp);
} }
return icp; return icp;
@ -1813,7 +1813,7 @@ static void ppc_spapr_init(MachineState *machine)
spapr->icp = xics_system_init(machine, spapr->icp = xics_system_init(machine,
DIV_ROUND_UP(max_cpus * kvmppc_smt_threads(), DIV_ROUND_UP(max_cpus * kvmppc_smt_threads(),
smp_threads), smp_threads),
XICS_IRQS); XICS_IRQS, &error_fatal);
if (smc->dr_lmb_enabled) { if (smc->dr_lmb_enabled) {
spapr_validate_node_memory(machine, &error_fatal); spapr_validate_node_memory(machine, &error_fatal);