[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH 06/10] pseries: Improve error handlin
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH 06/10] pseries: Improve error handling in find_unknown_sysbus_device() |
Date: |
Fri, 15 Jan 2016 16:40:24 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
David Gibson <address@hidden> writes:
> Use error_setg() to return an error instead of using an explicit exit().
>
> Signed-off-by: David Gibson <address@hidden>
> ---
> hw/ppc/spapr.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index bb5eaa5..ddca6e6 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1106,6 +1106,7 @@ static void spapr_reset_htab(sPAPRMachineState *spapr,
> Error **errp)
>
> static int find_unknown_sysbus_device(SysBusDevice *sbdev, void *opaque)
> {
> + Error **errp = opaque;
> bool matched = false;
>
> if (object_dynamic_cast(OBJECT(sbdev), TYPE_SPAPR_PCI_HOST_BRIDGE)) {
> @@ -1113,9 +1114,10 @@ static int find_unknown_sysbus_device(SysBusDevice
> *sbdev, void *opaque)
> }
>
> if (!matched) {
> - error_report("Device %s is not supported by this machine yet.",
> - qdev_fw_name(DEVICE(sbdev)));
> - exit(1);
> + error_setg(errp,
> + "Device %s is not supported by this machine yet",
> + qdev_fw_name(DEVICE(sbdev)));
> + return 1; /* Don't continue scanning devices */
Re the comment: really?
find_unknown_sysbus_device() gets passed to
foreach_dynamic_sysbus_device(), which passes it on to
find_sysbus_device().
find_sysbus_device() calls it directly for non-containers, ignoring the
function value.
For containers, it iterates over the container's contents with
object_child_foreach(). That function indeed stops when the callback
returns non-zero. However, the callback is find_sysbus_device(), not
find_unknown_sysbus_device().
Am I confused?
> }
>
> return 0;
> @@ -1150,7 +1152,7 @@ static void ppc_spapr_reset(void)
> uint32_t rtas_limit;
>
> /* Check for unknown sysbus devices */
> - foreach_dynamic_sysbus_device(find_unknown_sysbus_device, NULL);
> + foreach_dynamic_sysbus_device(find_unknown_sysbus_device, &error_fatal);
>
> /* Reset the hash table & recalc the RMA */
> spapr_reset_htab(spapr, &error_fatal);
[Qemu-ppc] [PATCH 10/10] pseries: Clean up error reporting in htab migration functions, David Gibson, 2016/01/15
[Qemu-ppc] [PATCH 05/10] pseries: Cleanup error handling in spapr_vga_init(), David Gibson, 2016/01/15
[Qemu-ppc] [PATCH 06/10] pseries: Improve error handling in find_unknown_sysbus_device(), David Gibson, 2016/01/15
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 06/10] pseries: Improve error handling in find_unknown_sysbus_device(),
Markus Armbruster <=
Re: [Qemu-ppc] [Qemu-devel] [PATCH 00/10] Cleanups to error reporting on ppc and spapr (v2), Markus Armbruster, 2016/01/15