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

Angus Ainslie angus at akkea.ca
Sat Mar 19 16:18:28 CET 2022


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 ?

> Thanks
> Angus
> 
>> Regards,
>> Simon


More information about the U-Boot mailing list