[PATCH v5 00/15] Do not stop uclass iteration on error

Simon Glass sjg at chromium.org
Thu Sep 29 12:00:55 CEST 2022


Hi Michal,

On Tue, 27 Sept 2022 at 15:38, Michal Suchanek <msuchanek at suse.de> wrote:
>
> Hello,
>
> this patch series fixes the simple uclass iterators to be usable for
> iterating uclasses even if some devices fail to probe.
>
> Before this series when a probe error happens an error is returned
> without any device pointer, and iteration cannot continue to devices
> that happen to be after the failing device in the uclass list.
>
> This is rarely expected, nor clearly documented, and for the most part
> not useful in any way.
>
> All but the last patch are new in v4 removing problematic iterator use.

Thank you for taking this on. It has been bugging me for about 6
years. It is not an easy task and you have dug in and carefully looked
at each situation and how to fix it.

Regards,
Simon


>
> v5:
>
> Split off patches that can be applied independently
>
> Fix uclass_foreach_dev_probe, pci_sriov_init, and sysinfo_get to work
> after the uclass_first_device_err change.
>
> Document that uclass_first_device_err and uclass_first_device_check can
> return non-activated device on error.
>
> Consolidate multiple similar cleanups into one patch.
>
> Thanks
>
> Michal
>
> Michal Suchanek (15):
>   dm: core: Fix uclass_probe_all to really probe all devices
>   dm: treewide: Do not opencode uclass_probe_all()
>   dm: pci: Fix device PCI iteration
>   bootstd: Fix listing boot devices
>   usb: ether: Fix error handling in usb_ether_init
>   stdio: Fix class iteration in stdio_add_devices()
>   video: ipuv3: Fix error handling when getting the display
>   w1: Fix bus counting in w1_get_bus
>   cmd: List all uclass devices regardless of probe error
>   dm: treewide: Use uclass_first_device_err when accessing one device
>   dm: treewide: Use uclass_next_device_err when accessing second device
>   dm: blk: Do not use uclass_next_device_err
>   dm: core: Switch uclass_*_device_err to use uclass_*_device_check
>   dm: treewide: Do not use the return value of simple uclass iterator
>   dm: core: Do not stop uclass iteration on error
>
>  arch/arm/mach-k3/j721s2_init.c            |  2 +-
>  arch/arm/mach-omap2/am33xx/board.c        |  4 +-
>  arch/x86/cpu/broadwell/cpu.c              |  4 +-
>  arch/x86/cpu/intel_common/cpu.c           |  4 +-
>  arch/x86/lib/pinctrl_ich6.c               |  4 +-
>  board/atmel/common/mac_eeprom.c           |  2 +-
>  board/intel/cougarcanyon2/cougarcanyon2.c |  4 +-
>  boot/bootdev-uclass.c                     |  7 +--
>  cmd/adc.c                                 | 22 ++++-----
>  cmd/demo.c                                | 16 ++++---
>  cmd/gpio.c                                | 15 ++++--
>  cmd/pmic.c                                | 15 +++---
>  cmd/regulator.c                           | 13 +++---
>  cmd/virtio.c                              |  9 ++--
>  common/stdio.c                            | 33 ++++++-------
>  drivers/block/blk-uclass.c                | 16 +++----
>  drivers/core/uclass.c                     | 56 ++++++++++++-----------
>  drivers/cpu/cpu-uclass.c                  | 20 ++------
>  drivers/dma/dma-uclass.c                  |  7 ++-
>  drivers/gpio/gpio-uclass.c                | 14 +++---
>  drivers/mmc/omap_hsmmc.c                  |  2 +-
>  drivers/pci/pci-uclass.c                  | 26 ++++-------
>  drivers/serial/serial-uclass.c            |  2 +-
>  drivers/serial/serial_bcm283x_mu.c        |  2 +-
>  drivers/serial/serial_bcm283x_pl011.c     |  2 +-
>  drivers/sysinfo/sysinfo-uclass.c          | 10 +++-
>  drivers/sysreset/sysreset_ast.c           |  2 +-
>  drivers/usb/gadget/ether.c                | 11 ++---
>  drivers/video/exynos/exynos_fb.c          | 24 ++++------
>  drivers/video/imx/mxc_ipuv3_fb.c          |  9 ++--
>  drivers/video/mali_dp.c                   |  2 +-
>  drivers/video/stm32/stm32_dsi.c           |  6 ++-
>  drivers/video/tegra124/dp.c               |  7 +--
>  drivers/virtio/virtio-uclass.c            | 15 +-----
>  drivers/w1/w1-uclass.c                    | 29 ++++++------
>  include/dm/uclass.h                       | 49 ++++++++++----------
>  lib/acpi/acpi_table.c                     |  2 +-
>  lib/efi_loader/efi_gop.c                  |  2 +-
>  net/eth-uclass.c                          |  6 ++-
>  test/boot/bootmeth.c                      |  2 +-
>  test/dm/acpi.c                            | 14 +++---
>  test/dm/core.c                            | 27 +++--------
>  test/dm/devres.c                          |  4 +-
>  test/dm/i2c.c                             |  8 ++--
>  test/dm/test-fdt.c                        | 27 ++++++++---
>  test/dm/virtio_device.c                   |  8 ++--
>  test/dm/virtio_rng.c                      |  2 +-
>  test/fuzz/cmd_fuzz.c                      |  2 +-
>  test/fuzz/virtio.c                        |  2 +-
>  test/test-main.c                          | 11 +----
>  50 files changed, 269 insertions(+), 313 deletions(-)
>
> --
> 2.37.3
>


More information about the U-Boot mailing list