problems with boards with CONFIG_DM disabled

Tom, Simon,
now that LTO is merged I am working on Support SPI NORs and OF partitions in `mtd list`
but CI fails for some boards, see https://github.com/u-boot/u-boot/pull/55
The reason is that there are still several boards which do not use CONFIG_DM.
On the previous version Simon commented that I should use if (IS_ENABLED(...)) instead of #if but this does not currently work for those boards with CONFIG_DM disabled (struct udevice's members are not visible at all, and functions from dm/device.h do not exist).
There are multiple possible workarounds: - use #if (until all boards are at CONFIG_DM) - create static inline versions of functions from dm/device.h returning failures when CONFIG_DM is not set (this would be rather big :( ) - wait till all those boards with CONFIG_DM disabled are removed - ...
What should I do?
Thanks,
Marek

On Wed, 26 May 2021 01:27:56 +0200 Marek Behun marek.behun@nic.cz wrote:
Tom, Simon,
now that LTO is merged I am working on Support SPI NORs and OF partitions in `mtd list`
but CI fails for some boards, see https://github.com/u-boot/u-boot/pull/55
The reason is that there are still several boards which do not use CONFIG_DM.
On the previous version Simon commented that I should use if (IS_ENABLED(...)) instead of #if but this does not currently work for those boards with CONFIG_DM disabled (struct udevice's members are not visible at all, and functions from dm/device.h do not exist).
There are multiple possible workarounds:
- use #if (until all boards are at CONFIG_DM)
- create static inline versions of functions from dm/device.h returning failures when CONFIG_DM is not set (this would be rather big :( )
- wait till all those boards with CONFIG_DM disabled are removed
- ...
Since there is rather a large number of defconfigs with CONFIG_DM disabled, and since the relevant code was rather complex
if (!is_part && dev && mtd->dev == dev) || !strcmp(name, mtd->name) || (is_part && mtd->dev && !strcmp(name, mtd->dev->name))
I moved the code into a separate name matching function and for now created a non-DM version.
Hopefully this will be acceptable and pass CI.
Marek

On Wed, May 26, 2021 at 02:25:54AM +0200, Marek Behun wrote:
On Wed, 26 May 2021 01:27:56 +0200 Marek Behun marek.behun@nic.cz wrote:
Tom, Simon,
now that LTO is merged I am working on Support SPI NORs and OF partitions in `mtd list`
but CI fails for some boards, see https://github.com/u-boot/u-boot/pull/55
The reason is that there are still several boards which do not use CONFIG_DM.
On the previous version Simon commented that I should use if (IS_ENABLED(...)) instead of #if but this does not currently work for those boards with CONFIG_DM disabled (struct udevice's members are not visible at all, and functions from dm/device.h do not exist).
There are multiple possible workarounds:
- use #if (until all boards are at CONFIG_DM)
- create static inline versions of functions from dm/device.h returning failures when CONFIG_DM is not set (this would be rather big :( )
- wait till all those boards with CONFIG_DM disabled are removed
- ...
Since there is rather a large number of defconfigs with CONFIG_DM disabled, and since the relevant code was rather complex
if (!is_part && dev && mtd->dev == dev) || !strcmp(name, mtd->name) || (is_part && mtd->dev && !strcmp(name, mtd->dev->name))
I moved the code into a separate name matching function and for now created a non-DM version.
Hopefully this will be acceptable and pass CI.
There's two parts to it, I suppose. First, looking at the failed build: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=2297&view=log... that's not a no-CONFIG_DM migration (SPL_DM is not required). Second, I wonder what it would look like on top of my WIP/make-DM_USB-fatal branch as that has removed a number of non-migrated boards. The deadline for CONFIG_DM causing removal itself is still a bit away, but that branch does remove a number of boards.

On Wed, 26 May 2021 08:52:58 -0400 Tom Rini trini@konsulko.com wrote:
On Wed, May 26, 2021 at 02:25:54AM +0200, Marek Behun wrote:
On Wed, 26 May 2021 01:27:56 +0200 Marek Behun marek.behun@nic.cz wrote:
Tom, Simon,
now that LTO is merged I am working on Support SPI NORs and OF partitions in `mtd list`
but CI fails for some boards, see https://github.com/u-boot/u-boot/pull/55
The reason is that there are still several boards which do not use CONFIG_DM.
On the previous version Simon commented that I should use if (IS_ENABLED(...)) instead of #if but this does not currently work for those boards with CONFIG_DM disabled (struct udevice's members are not visible at all, and functions from dm/device.h do not exist).
There are multiple possible workarounds:
- use #if (until all boards are at CONFIG_DM)
- create static inline versions of functions from dm/device.h
returning failures when CONFIG_DM is not set (this would be rather big :( )
- wait till all those boards with CONFIG_DM disabled are removed
- ...
Since there is rather a large number of defconfigs with CONFIG_DM disabled, and since the relevant code was rather complex
if (!is_part && dev && mtd->dev == dev) || !strcmp(name, mtd->name) || (is_part && mtd->dev && !strcmp(name, mtd->dev->name))
I moved the code into a separate name matching function and for now created a non-DM version.
Hopefully this will be acceptable and pass CI.
There's two parts to it, I suppose. First, looking at the failed build: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=2297&view=log... that's not a no-CONFIG_DM migration (SPL_DM is not required). Second, I wonder what it would look like on top of my WIP/make-DM_USB-fatal branch as that has removed a number of non-migrated boards. The deadline for CONFIG_DM causing removal itself is still a bit away, but that branch does remove a number of boards.
I've solved this for now, hopefully in an acceptable way, check it out: https://patchwork.ozlabs.org/project/uboot/patch/20210526120826.8045-10-mare...
look for mtd_device_matches_name, there are 2 implementations guarded by macros.
participants (3)
-
Marek Behun
-
Marek Behún
-
Tom Rini