Hi Cédric

> Subject: Re: [PATCH v2 5/7] hw/arm/aspeed_ast27x0-fc: Replace error_abort
> with local errp
> 
> On 9/24/25 07:55, Jamin Lin wrote:
> > This patch introduces a local Error **errp = NULL and replaces
> > error_abort with errp in these paths.
> >
> > This makes error handling more consistent with QEMU guidelines and
> > avoids using error_abort in cases where failure should not be treated
> > as a programming error.
> >
> > Discussion:
> > object_property_set_link() can return false only when it fails, and it
> > sets an error when it fails. Since passing &error_abort causes an
> > abort, the function never returns false, and the return statement is
> > effectively dead code. If failure is considered a programming error,
> > using &error_abort is correct. However, if failure is not a
> > programming error, passing &error_abort is wrong, and errp should be
> > used instead. This patch follows the latter approach by replacing 
> > error_abort
> with errp.
> > https://patchwork.kernel.org/project/qemu-devel/patch/20250717034054.1
> > [email protected]/#26540626
> >
> > Signed-off-by: Jamin Lin <[email protected]>
> > ---
> >   hw/arm/aspeed_ast27x0-fc.c | 27 ++++++++++++++++-----------
> >   1 file changed, 16 insertions(+), 11 deletions(-)
> >
> > diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c
> > index 7087be4288..b15cb94c39 100644
> > --- a/hw/arm/aspeed_ast27x0-fc.c
> > +++ b/hw/arm/aspeed_ast27x0-fc.c
> > @@ -61,6 +61,7 @@ static void ast2700fc_ca35_init(MachineState
> > *machine)
> 
> 
> ast2700fc_ca35_init(), and others below, should to take an 'Error **errp'
> parameter and return a bool, which should be false in case of error. The 
> caller,
> ast2700fc_init() would then check the returned value and possibly report the
> error.


Thanks for your review and suggestion.
Will fix it.

> 
> A good reading on the error topic is in file "include/qapi/error.h".
> 
> >       Ast2700FCState *s = AST2700A1FC(machine);
> >       AspeedSoCState *soc;
> >       AspeedSoCClass *sc;
> > +    Error **errp = NULL;
> >
> >       object_initialize_child(OBJECT(s), "ca35", &s->ca35, "ast2700-a1");
> >       soc = ASPEED_SOC(&s->ca35);
> > @@ -71,20 +72,20 @@ static void ast2700fc_ca35_init(MachineState
> *machine)
> >       memory_region_add_subregion(get_system_memory(), 0,
> > &s->ca35_memory);
> >
> >       if (!memory_region_init_ram(&s->ca35_dram, OBJECT(&s->ca35),
> "ca35-dram",
> > -                                AST2700FC_BMC_RAM_SIZE,
> &error_abort)) {
> > +                                AST2700FC_BMC_RAM_SIZE, errp))
> {
> >           return;
> >       }
> >       if (!object_property_set_link(OBJECT(&s->ca35), "memory",
> >                                     OBJECT(&s->ca35_memory),
> > -                                  &error_abort)) {
> > +                                  errp)) {
> >           return;
> >       };
> >       if (!object_property_set_link(OBJECT(&s->ca35), "dram",
> > -                                  OBJECT(&s->ca35_dram),
> &error_abort)) {
> > +                                  OBJECT(&s->ca35_dram), errp)) {
> >           return;
> >       }
> >       if (!object_property_set_int(OBJECT(&s->ca35), "ram-size",
> > -                                 AST2700FC_BMC_RAM_SIZE,
> &error_abort)) {
> > +                                 AST2700FC_BMC_RAM_SIZE, errp))
> {
> 
> object_property_set_int() is considered as a routine which shouldn't fail.
> So the common practice in models is to pass &error_abort and ignore the
> returned value.
>
Will fix it.

Thanks-Jamin
> 
> Thanks,
> 
> C.
> 
> 
> 
> >           return;
> >       }
> >
> > @@ -95,15 +96,15 @@ static void ast2700fc_ca35_init(MachineState
> *machine)
> >           }
> >       }
> >       if (!object_property_set_int(OBJECT(&s->ca35), "hw-strap1",
> > -                                 AST2700FC_HW_STRAP1,
> &error_abort)) {
> > +                                 AST2700FC_HW_STRAP1, errp)) {
> >           return;
> >       }
> >       if (!object_property_set_int(OBJECT(&s->ca35), "hw-strap2",
> > -                                 AST2700FC_HW_STRAP2,
> &error_abort)) {
> > +                                 AST2700FC_HW_STRAP2, errp)) {
> >           return;
> >       }
> >       aspeed_soc_uart_set_chr(soc, ASPEED_DEV_UART12, serial_hd(0));
> > -    if (!qdev_realize(DEVICE(&s->ca35), NULL, &error_abort)) {
> > +    if (!qdev_realize(DEVICE(&s->ca35), NULL, errp)) {
> >           return;
> >       }
> >
> > @@ -125,6 +126,8 @@ static void ast2700fc_ssp_init(MachineState
> *machine)
> >   {
> >       AspeedSoCState *soc;
> >       Ast2700FCState *s = AST2700A1FC(machine);
> > +    Error **errp = NULL;
> > +
> >       s->ssp_sysclk = clock_new(OBJECT(s), "SSP_SYSCLK");
> >       clock_set_hz(s->ssp_sysclk, 200000000ULL);
> >
> > @@ -134,13 +137,13 @@ static void ast2700fc_ssp_init(MachineState
> > *machine)
> >
> >       qdev_connect_clock_in(DEVICE(&s->ssp), "sysclk", s->ssp_sysclk);
> >       if (!object_property_set_link(OBJECT(&s->ssp), "memory",
> > -                                  OBJECT(&s->ssp_memory),
> &error_abort)) {
> > +                                  OBJECT(&s->ssp_memory), errp))
> {
> >           return;
> >       }
> >
> >       soc = ASPEED_SOC(&s->ssp);
> >       aspeed_soc_uart_set_chr(soc, ASPEED_DEV_UART4, serial_hd(1));
> > -    if (!qdev_realize(DEVICE(&s->ssp), NULL, &error_abort)) {
> > +    if (!qdev_realize(DEVICE(&s->ssp), NULL, errp)) {
> >           return;
> >       }
> >   }
> > @@ -149,6 +152,8 @@ static void ast2700fc_tsp_init(MachineState
> *machine)
> >   {
> >       AspeedSoCState *soc;
> >       Ast2700FCState *s = AST2700A1FC(machine);
> > +    Error **errp = NULL;
> > +
> >       s->tsp_sysclk = clock_new(OBJECT(s), "TSP_SYSCLK");
> >       clock_set_hz(s->tsp_sysclk, 200000000ULL);
> >
> > @@ -158,13 +163,13 @@ static void ast2700fc_tsp_init(MachineState
> > *machine)
> >
> >       qdev_connect_clock_in(DEVICE(&s->tsp), "sysclk", s->tsp_sysclk);
> >       if (!object_property_set_link(OBJECT(&s->tsp), "memory",
> > -                                  OBJECT(&s->tsp_memory),
> &error_abort)) {
> > +                                  OBJECT(&s->tsp_memory), errp))
> {
> >           return;
> >       }
> >
> >       soc = ASPEED_SOC(&s->tsp);
> >       aspeed_soc_uart_set_chr(soc, ASPEED_DEV_UART7, serial_hd(2));
> > -    if (!qdev_realize(DEVICE(&s->tsp), NULL, &error_abort)) {
> > +    if (!qdev_realize(DEVICE(&s->tsp), NULL, errp)) {
> >           return;
> >       }
> >   }

Reply via email to