[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/11] pseries: Cleanup error handlin
From: |
Eric Blake |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/11] pseries: Cleanup error handling of spapr_cpu_init() |
Date: |
Fri, 11 Dec 2015 07:54:48 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 12/10/2015 05:11 PM, David Gibson wrote:
> 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
> the error infrastructure instead of an old-style explicit fprintf / exit.
>
> Signed-off-by: David Gibson <address@hidden>
> ---
> hw/ppc/spapr.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
> @@ -1633,7 +1634,7 @@ static void spapr_cpu_init(sPAPRMachineState *spapr,
> PowerPCCPU *cpu)
> }
>
> if (cpu->max_compat) {
> - ppc_set_compat(cpu, cpu->max_compat, &error_fatal);
> + ppc_set_compat(cpu, cpu->max_compat, errp);
> }
>
> xics_cpu_setup(spapr->icp, cpu);
Pre-patch: you can't reach the xics_cpu_setup() call on error.
Post-patch: depending on what the caller passed in, you can fall through
to xics_cpu_setup() with a potentially incomplete cpu.
I think a more robust solution is probably along the lines of:
Error *err = NULL;
if (cpu->max_compat) {
ppc_set_compat(cpu, cpu->max_compat, &err);
if (err) {
error_propagate(errp, err);
return;
}
}
xics_cpu_setup(spapr_icp, cpu);
> @@ -1802,10 +1803,9 @@ 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");
> - exit(1);
> + error_setg(&error_fatal, "Unable to find PowerPC CPU
> definition");
> }
> - spapr_cpu_init(spapr, cpu);
> + spapr_cpu_init(spapr, cpu, &error_fatal);
Of course, in _this_ patch, since the (only) caller is passing
&error_fatal, you don't hit the situation of fallthrough to
xics_cpu_setup().
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 04/11] pseries: Clean up error handling in spapr_validate_node_memory(), (continued)
- [Qemu-ppc] [PATCH 08/11] pseries: Clean up error handling in spapr_rtas_register(), David Gibson, 2015/12/10
- [Qemu-ppc] [PATCH 11/11] pseries: Clean up error reporting in htab migration functions, David Gibson, 2015/12/10
- [Qemu-ppc] [PATCH 02/11] pseries: Cleanup error handling of spapr_cpu_init(), David Gibson, 2015/12/10
- [Qemu-ppc] [PATCH 06/11] pseries: Improve error handling in find_unknown_sysbus_device(), David Gibson, 2015/12/10
- [Qemu-ppc] [PATCH 01/11] ppc: Cleanup error handling in ppc_set_compat(), David Gibson, 2015/12/10