[U-Boot] [PATCH] ARM: reset: use do_reset in SPL/TPL if SYSRESET was not enabled for them

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Thu Nov 28 11:31:25 UTC 2019


On Thu, Nov 28, 2019 at 11:52 AM Claudius Heine <ch at denx.de> wrote:
>
> On 28/11/2019 10.27, Simon Goldschmidt wrote:
> > On Thu, Nov 28, 2019 at 9:57 AM Claudius Heine <ch at denx.de> wrote:
> >>
> >> In case CONFIG_SYSRESET is set, do_reset from reset.c will not be available
> >> anywere, even if SYSRESET is disabled for SPL/TPL.
> >>
> >> 'do_reset' is called from SPL for instance from the panic handler and
> >> PANIC_HANG is not set
> >>
> >> Signed-off-by: Claudius Heine <ch at denx.de>
> >> ---
> >>  arch/arm/lib/Makefile | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> >> index 9de9a9acee..7bf2c077ba 100644
> >> --- a/arch/arm/lib/Makefile
> >> +++ b/arch/arm/lib/Makefile
> >> @@ -56,7 +56,7 @@ obj-y += interrupts_64.o
> >>  else
> >>  obj-y  += interrupts.o
> >>  endif
> >> -ifndef CONFIG_SYSRESET
> >> +ifndef CONFIG_$(SPL_TPL_)SYSRESET
> >
> > Would it work to do this:
> > obj-$(CONFIG_$(SPL_TPL_)SYSRESET) += reset.o
> >
> > that would be nicer than ifndef, I think.
>
> Yes it would, but it didn't seem to work.

OK, thanks for trying. Given the results below, it's fine for me, so:

Reviewed-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>

>
> With:
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index 9416369aad..913bb21eaf 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -56,9 +56,7 @@ obj-y += interrupts_64.o
>  else
>  obj-y  += interrupts.o
>  endif
> -ifndef CONFIG_(SPL_TPL_)SYSRESET
> -obj-y  += reset.o
> -endif
> +obj-$(CONFIG_$(SPL_TPL_)SYSRESET)      += reset.o
>
>  obj-y  += cache.o
>  obj-$(CONFIG_SYS_ARM_CACHE_CP15)       += cache-cp15.o
>
> I get with CONFIG_SYSRESET:
>
> arm-linux-gnu-ld.bfd: drivers/built-in.o: in function `do_reset':
> drivers/sysreset/sysreset-uclass.c:113: multiple definition of
> `do_reset'; arch/arm/lib/built-in.o:arch/arm/lib/reset.c:30: first
> defined here
> make: *** [Makefile:1667: u-boot] Error 1
>
> And without CONFIG_SYSRESET:
>
> arm-linux-gnu-ld.bfd: lib/built-in.o: in function
> `efi_reset_system_boottime':
> lib/efi_loader/efi_runtime.c:165: undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: lib/built-in.o: in function `panic_finish':
> lib/panic.c:26: undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: arch/arm/mach-imx/built-in.o: in function
> `do_boot_mode':
> arch/arm/mach-imx/cmd_bmode.c:76: undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: cmd/built-in.o:(.u_boot_list_2_cmd_2_reset+0xc):
> undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: common/built-in.o: in function `jumptable_init':
> common/exports.c:30: undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: common/built-in.o: in function `print_resetinfo':
> common/board_f.c:167: undefined reference to `sysreset_get_status'
> arm-linux-gnu-ld.bfd: common/built-in.o: in function `do_bootm_states':
> common/bootm.c:633: undefined reference to `do_reset'
> arm-linux-gnu-ld.bfd: common/built-in.o: in function `run_usb_dnl_gadget':
> common/dfu.c:90: undefined reference to `do_reset'
> make: *** [Makefile:1667: u-boot] Error 1


More information about the U-Boot mailing list