From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C4BC6C4332F for ; Thu, 13 Oct 2022 11:18:18 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4C6DA84F11; Thu, 13 Oct 2022 13:18:16 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.b="UkuFgx6I"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="yCxD25jf"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4B5BB84F23; Wed, 12 Oct 2022 21:58:32 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 18F7284966 for ; Wed, 12 Oct 2022 21:58:28 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=msuchanek@suse.de Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id D82EA21DBA; Wed, 12 Oct 2022 19:58:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1665604707; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Z/sMWdTjbzC0gro8STZy4Jgj0MJvaSW0TzmJrKSWZJo=; b=UkuFgx6IqWhzz9giISffjsnDecXQckleM8k1PXurGaN46DXHzQazGnl6q/hC8Ub7m3zFd4 uZkivjm21WwE4Op6QncT93U7hlHPobdeNMbhk7eKMabjkNV7iDs2LZaqHjISaThTEs2a48 4DcersPTIovUPRtDcIwevfhbSDTZDTY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1665604707; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Z/sMWdTjbzC0gro8STZy4Jgj0MJvaSW0TzmJrKSWZJo=; b=yCxD25jfIwD7WzMEw+oH0W1ByUZzLSSN2Udlk1c2ae4pGDCCz3+k+MkX0onBnEPHQHtNTS Mtcs43O0eZwDC6AA== Received: from naga.suse.cz (unknown [10.100.224.114]) by relay2.suse.de (Postfix) with ESMTP id 591382C141; Wed, 12 Oct 2022 19:58:24 +0000 (UTC) From: Michal Suchanek To: u-boot@lists.denx.de Cc: Michal Suchanek , Simon Glass , Vabhav Sharma , Sean Anderson , Stefan Roese , Bin Meng , Michal Simek , Ovidiu Panait , Heinrich Schuchardt , Andrew Scull , =?UTF-8?q?Pali=20Roh=C3=A1r?= , =?UTF-8?q?Pierre-Cl=C3=A9ment=20Tosi?= , Lukasz Majewski , Marek Vasut , Jason Liu , Loic Poulain , Anatolij Gustschin , Heiko Schocher , Maxime Ripard , Eugen Hristev , Samuel Dionne-Riel , Vyacheslav Bocharov , Diego Rondini , Peng Fan , Jaehoon Chung , Matthias Brugger , Liviu Dudau , Patrick Delaunay , Patrice Chotard , Ilias Apalodimas , Joe Hershberger , Ramon Fried , Sean Anderson , Mark Kettenis , Peter Robinson , Tom Warren , uboot-stm32@st-md-mailman.stormreply.com (moderated list:ARM STM STM32MP), AKASHI Takahiro , Mario Six , Alexander Dahl , Andrew Jeffery , Eddie James , Pavel Herrmann , =?UTF-8?q?Viktor=20K=C5=99iv=C3=A1k?= , Tomas Hlavacek Subject: [PATCH v6 00/20] Do not stop uclass iteration on error Date: Wed, 12 Oct 2022 21:57:49 +0200 Message-Id: X-Mailer: git-send-email 2.37.3 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Thu, 13 Oct 2022 13:18:14 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean 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. 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. v6: Split off the fixups from uclass_*_device_err switch patch. Thanks Michal Michal Suchanek (20): 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 net: eth-uclass: Do not set device on error dm: pci: Update error handling in pci_sriov_init mpc83xx: gazerbeam: Update sysinfo_get error handling dm: core: Switch uclass_foreach_dev_probe to use simple iterator dm: core: Switch uclass_*_device_err to use uclass_*_device_check dm: core: Non-activated device may be returned from uclass iterators that provide error handling 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/gdsys/mpc8308/gazerbeam.c | 12 +++-- board/intel/cougarcanyon2/cougarcanyon2.c | 4 +- boot/bootdev-uclass.c | 4 +- cmd/adc.c | 20 ++++---- cmd/demo.c | 15 +++--- cmd/gpio.c | 15 ++++-- cmd/pmic.c | 15 +++--- cmd/regulator.c | 13 +++--- cmd/virtio.c | 9 ++-- common/stdio.c | 32 ++++++------- 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/sysreset/sysreset_ast.c | 2 +- drivers/usb/gadget/ether.c | 11 ++--- drivers/video/exynos/exynos_fb.c | 14 ++---- drivers/video/imx/mxc_ipuv3_fb.c | 9 ++-- drivers/video/mali_dp.c | 2 +- drivers/video/stm32/stm32_dsi.c | 2 +- drivers/video/tegra124/dp.c | 4 +- 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 | 46 ++++++++++++++----- 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, 266 insertions(+), 313 deletions(-) -- 2.37.3