[PATCH v2] core: devres: optionally build devres into the SPL

Simon Glass sjg at chromium.org
Mon Mar 28 08:35:03 CEST 2022


Hi Angus,

On Sat, 19 Mar 2022 at 09:18, Angus Ainslie <angus at akkea.ca> wrote:
>
> On 2022-03-19 07:15, Angus Ainslie wrote:
> > Hi Simon,
> >
> > On 2022-03-18 15:41, Simon Glass wrote:
> >> Hi Angus,
> >>
> >> On Tue, 1 Mar 2022 at 07:58, Simon Glass <sjg at chromium.org> wrote:
> >>>
> >>> On Mon, 28 Feb 2022 at 13:33, Angus Ainslie <angus at akkea.ca> wrote:
> >>> >
> >>> > Add a CONFIG_SPL_DEVRES option
> >>> >
> >>> > Signed-off-by: Angus Ainslie <angus at akkea.ca>
> >>> > ---
> >>> >
> >>> > Changes since v1:
> >>> >
> >>> > Instead of gaurding the source add an SPL_DEVRES option
> >>> >
> >>> >  drivers/core/Kconfig  | 13 +++++++++++++
> >>> >  drivers/core/Makefile |  2 +-
> >>> >  2 files changed, 14 insertions(+), 1 deletion(-)
> >>
> >> Unfortunately this break the tests, e.g. building sandbox_spl - can
> >> you please take a look?
> >>
> >> sandbox_spl: +make O=build-sandbox_spl -s sandbox_spl_defconfig
> >> +make O=build-sandbox_spl -s -j4
> >> /usr/bin/ld: /tmp/ccsYY64W.ltrans0.ltrans.o: in function
> >> `device_unbind':
> >> build-sandbox_spl/spl/../../drivers/core/device-remove.c:120:
> >> undefined reference to `devres_release_all'
> >> /usr/bin/ld: /tmp/ccsYY64W.ltrans0.ltrans.o: in function
> >> `device_free':
> >> build-sandbox_spl/spl/../../drivers/core/device-remove.c:157:
> >> undefined reference to `devres_release_probe'
> >> collect2: error: ld returned 1 exit status
> >> make[3]: *** [../scripts/Makefile.spl:509: spl/u-boot-spl] Error 1
> >> make[2]: *** [Makefile:2094: spl/u-boot-spl] Error 2
> >> make[1]: *** [Makefile:177: sub-make] Error 2
> >> Exit code: 2
> >>
> >
> > So the problem here is that CONFIG_DM_DEVICE_REMOVE can be defined
> > without CONFIG_DEVRES being defined.
> >
> > Is there a way to make DM_DEVICE_REMOVE dependant on DEVRES or do I
> > need to add "&& CONFIG_IS_ENABLED(DEVRES)" everywhere that I find
> > "CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)" ?
> >
>
> The test failure can be "fixed" using this
>
> diff --git a/configs/sandbox_noinst_defconfig
> b/configs/sandbox_noinst_defconfig
> index ec912cf0ec8..69c97921744 100644
> --- a/configs/sandbox_noinst_defconfig
> +++ b/configs/sandbox_noinst_defconfig
> @@ -105,6 +105,7 @@ CONFIG_SYSCON=y
>   CONFIG_SPL_SYSCON=y
>   CONFIG_DEVRES=y
>   CONFIG_DEBUG_DEVRES=y
> +CONFIG_SPL_DEVRES=y
>   # CONFIG_SPL_SIMPLE_BUS is not set
>   CONFIG_ADC=y
>   CONFIG_ADC_SANDBOX=y
> diff --git a/configs/sandbox_spl_defconfig
> b/configs/sandbox_spl_defconfig
> index 1687ccf4530..2fcda46dfd1 100644
> --- a/configs/sandbox_spl_defconfig
> +++ b/configs/sandbox_spl_defconfig
> @@ -107,6 +107,7 @@ CONFIG_SYSCON=y
>   CONFIG_SPL_SYSCON=y
>   CONFIG_DEVRES=y
>   CONFIG_DEBUG_DEVRES=y
> +CONFIG_SPL_DEVRES=y
>   # CONFIG_SPL_SIMPLE_BUS is not set
>   CONFIG_ADC=y
>   CONFIG_ADC_SANDBOX=y
>
> But is that the right way based on the questions above ?

I just sent a patch to update DEVRES to only be enabled on SPL. I
think DM_DEVICE_REMOVE should not depend on DEVRES., but perhaps the
other way around would make sense?

Regards,
Simon


More information about the U-Boot mailing list