Hi Tom

On Fri, Dec 19, 2025 at 9:21 PM Tom Rini <[email protected]> wrote:
>
> The devm alloc functions that we have may follow the Linux kernel model
> where allocations are (almost always) automatically free()'d. However,
> quite often we don't enable, in full U-Boot, the corresponding automatic
> free. This in turn leads to memory leaks. Rather than manually tracking
> allocations and implementing frees, rework things so that we follow
> expectations now and enable the DEVRES functionality to manage frees.
>
> This turns DEVRES from a prompted symbol to a symbol that must be
> select'd, and we now remove our non-managed alloc/free functions from
> outside of xPL builds.
>
> Signed-off-by: Tom Rini <[email protected]>
> ---
>  arch/arm/mach-stm32mp/Kconfig    | 1 +
>  drivers/block/Kconfig            | 1 +
>  drivers/clk/Kconfig              | 1 +
>  drivers/core/Kconfig             | 7 ++++---
>  drivers/dma/ti/Kconfig           | 1 +
>  drivers/firmware/Kconfig         | 1 +
>  drivers/firmware/arm-ffa/Kconfig | 1 +
>  drivers/gpio/Kconfig             | 3 +++
>  drivers/i2c/muxes/Kconfig        | 1 +
>  drivers/i3c/Kconfig              | 1 +
>  drivers/mailbox/Kconfig          | 1 +
>  drivers/mtd/nand/raw/Kconfig     | 5 +++++
>  drivers/mtd/nand/spi/Kconfig     | 1 +
>  drivers/mtd/spi/Kconfig          | 1 +
>  drivers/mux/Kconfig              | 1 +
>  drivers/net/Kconfig              | 3 +++
>  drivers/net/phy/Kconfig          | 2 ++
>  drivers/pci/Kconfig              | 3 +++
>  drivers/phy/Kconfig              | 1 +
>  drivers/pinctrl/Kconfig          | 1 +
>  drivers/pinctrl/mscc/Kconfig     | 1 +
>  drivers/pinctrl/mvebu/Kconfig    | 1 +
>  drivers/pinctrl/renesas/Kconfig  | 1 +
>  drivers/power/regulator/Kconfig  | 1 +
>  drivers/reboot-mode/Kconfig      | 1 +
>  drivers/reset/Kconfig            | 1 +
>  drivers/smem/Kconfig             | 1 +
>  drivers/soc/ti/Kconfig           | 1 +
>  drivers/spi/Kconfig              | 2 ++
>  drivers/usb/cdns3/Kconfig        | 1 +
>  drivers/usb/dwc3/Kconfig         | 1 +
>  drivers/usb/host/Kconfig         | 1 +
>  drivers/video/Kconfig            | 1 +
>  include/dm/devres.h              | 3 ++-
>  34 files changed, 50 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
> index ba4694f29644..2716844b2599 100644
> --- a/arch/arm/mach-stm32mp/Kconfig
> +++ b/arch/arm/mach-stm32mp/Kconfig
> @@ -170,6 +170,7 @@ config STM32_ECDSA_VERIFY
>
>  config STM32MP_TAMP_NVMEM
>         bool "STM32 TAMP backup registers via NVMEM API"
> +       select DEVRES
>         select NVMEM
>         default y
>         help
> diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
> index 185da2b5cfc2..461b5a9fc838 100644
> --- a/drivers/block/Kconfig
> +++ b/drivers/block/Kconfig
> @@ -265,6 +265,7 @@ config SYS_64BIT_LBA
>
>  config RKMTD
>         bool "Rockchip rkmtd virtual block device"
> +       select DEVRES
>         select RANDOM_UUID
>         help
>           Enable "rkmtd" class and driver to create a virtual block device
> diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
> index 85cc472b4cb9..ae783254008c 100644
> --- a/drivers/clk/Kconfig
> +++ b/drivers/clk/Kconfig
> @@ -3,6 +3,7 @@ menu "Clock"
>  config CLK
>         bool "Enable clock driver support"
>         depends on DM
> +       select DEVRES
>         help
>           This allows drivers to be provided for clock generators, including
>           oscillators and PLLs. Devices can use a common clock API to request
> diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig
> index 6b4330fe4ea3..53eaa2da25b9 100644
> --- a/drivers/core/Kconfig
> +++ b/drivers/core/Kconfig
> @@ -197,6 +197,7 @@ config DM_DMA
>  config REGMAP
>         bool "Support register maps"
>         depends on DM
> +       select DEVRES
>         help
>           Hardware peripherals tend to have one or more sets of registers
>           which can be accessed to control the hardware. A register map
> @@ -271,7 +272,7 @@ config VPL_SYSCON
>           assigning a unique number to each.
>
>  config DEVRES
> -       bool "Managed device resources"
> +       bool
>         depends on DM
>         help
>           This option enables the Managed device resources core support.
> @@ -279,8 +280,8 @@ config DEVRES
>           released whether initialization fails half-way or the device gets
>           detached.
>
> -         If this option is disabled, devres functions fall back to
> -         non-managed variants.  For example, devres_alloc() to kzalloc(),
> +         This option is disabled in xPL phases anddevres functions fall back

Fix this typo

> +         to non-managed variants.  For example, devres_alloc() to kzalloc(),
>           devm_kmalloc() to kmalloc(), etc.
>
>  config DEBUG_DEVRES
> diff --git a/drivers/dma/ti/Kconfig b/drivers/dma/ti/Kconfig
> index 87c026e04903..5cec6ddd3e30 100644
> --- a/drivers/dma/ti/Kconfig
> +++ b/drivers/dma/ti/Kconfig
> @@ -5,6 +5,7 @@ if ARCH_K3
>  config TI_K3_NAVSS_UDMA
>          bool "Texas Instruments UDMA"
>          depends on ARCH_K3
> +        select DEVRES
>          select DMA
>          select TI_K3_NAVSS_RINGACC
>          select TI_K3_NAVSS_PSILCFG
> diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> index a094e6c3afef..220de7319506 100644
> --- a/drivers/firmware/Kconfig
> +++ b/drivers/firmware/Kconfig
> @@ -16,6 +16,7 @@ config ARM_PSCI_FW
>  config TI_SCI_PROTOCOL
>         tristate "TI System Control Interface (TISCI) Message Protocol"
>         depends on K3_SEC_PROXY
> +       select DEVRES
>         select FIRMWARE
>         select SPL_FIRMWARE if SPL
>         help
> diff --git a/drivers/firmware/arm-ffa/Kconfig 
> b/drivers/firmware/arm-ffa/Kconfig
> index d75f8b53fd85..3706a8893059 100644
> --- a/drivers/firmware/arm-ffa/Kconfig
> +++ b/drivers/firmware/arm-ffa/Kconfig
> @@ -6,6 +6,7 @@ config ARM_FFA_TRANSPORT
>         select ARM_SMCCC if !SANDBOX
>         select ARM_SMCCC_FEATURES if !SANDBOX
>         imply CMD_ARMFFA
> +       select DEVRES
>         select LIB_UUID
>         select DEVRES
>         help
> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
> index 18ca8ad4caca..60c5c54688e6 100644
> --- a/drivers/gpio/Kconfig
> +++ b/drivers/gpio/Kconfig
> @@ -19,6 +19,7 @@ if GPIO
>  config DM_GPIO
>         bool "Enable Driver Model for GPIO drivers"
>         depends on DM
> +       select DEVRES
>         help
>           Enable driver model for GPIO access. The standard GPIO
>           interface (gpio_get_value(), etc.) is then implemented by
> @@ -151,6 +152,7 @@ config CORTINA_GPIO
>  config DWAPB_GPIO
>         bool "DWAPB GPIO driver"
>         depends on DM && DM_GPIO
> +       select DEVRES
>         help
>           Support for the Designware APB GPIO driver.
>
> @@ -253,6 +255,7 @@ config IMX_RGPIO2P
>
>  config IPROC_GPIO
>         bool "Broadcom iProc GPIO driver(without pinconf)"
> +       select DEVRES
>         help
>           The Broadcom iProc based SoCs- Cygnus, NS2, NS3, NSP and Stingray,
>           use the same GPIO Controller IP hence this driver could be used
> diff --git a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig
> index 65319bb6fd83..3b1220b21056 100644
> --- a/drivers/i2c/muxes/Kconfig
> +++ b/drivers/i2c/muxes/Kconfig
> @@ -51,6 +51,7 @@ config I2C_MUX_PCA954x
>  config I2C_MUX_GPIO
>          tristate "GPIO-based I2C multiplexer"
>         depends on I2C_MUX && DM_GPIO
> +       select DEVRES
>         help
>           If you say yes to this option, support will be included for
>           a GPIO based I2C multiplexer. This driver provides access to
> diff --git a/drivers/i3c/Kconfig b/drivers/i3c/Kconfig
> index d877a7443538..48341f9b8737 100644
> --- a/drivers/i3c/Kconfig
> +++ b/drivers/i3c/Kconfig
> @@ -1,6 +1,7 @@
>  menuconfig I3C
>         tristate "I3C support"
>         select I2C
> +       select DEVRES
>         help
>           I3C is a serial protocol standardized by the MIPI alliance.
>
> diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
> index cfd2a3be3fd0..f45e611c9662 100644
> --- a/drivers/mailbox/Kconfig
> +++ b/drivers/mailbox/Kconfig
> @@ -31,6 +31,7 @@ config IMX_MU_MBOX
>  config MPFS_MBOX
>         bool "Enable MPFS system controller support"
>         depends on DM_MAILBOX && ARCH_RV64I
> +       select DEVRES
>         help
>           Enable support for the mailboxes that provide a communication
>           channel with the system controller integrated on PolarFire SoC.
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 5e4d1c0a9378..e0ff28cb21bd 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -51,6 +51,7 @@ config DM_NAND_ATMEL
>         bool "Support Atmel NAND controller with DM support"
>         depends on ARCH_AT91
>         select ATMEL_EBI
> +       select DEVRES
>         select SYS_NAND_SELF_INIT
>         imply SYS_NAND_USE_FLASH_BBT
>         help
> @@ -74,6 +75,7 @@ config ATMEL_NAND_HWECC
>  config ATMEL_NAND_HW_PMECC
>         bool "Atmel Programmable Multibit ECC (PMECC)"
>         select ATMEL_NAND_HWECC
> +       select DEVRES
>         help
>           The Programmable Multibit ECC (PMECC) controller is a programmable
>           binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
> @@ -118,6 +120,7 @@ config NAND_BRCMNAND
>         bool "Support Broadcom NAND controller"
>         depends on OF_CONTROL && DM && DM_MTD
>         depends on ARCH_BCMBCA || ARCH_BMIPS || TARGET_BCMNS || TARGET_BCMNS3
> +       select DEVRES
>         select SYS_NAND_SELF_INIT
>         help
>           Enable the driver for NAND flash on platforms using a Broadcom NAND
> @@ -197,6 +200,7 @@ config SPL_NAND_LOAD
>  config NAND_CADENCE
>         bool "Support Cadence NAND controller as a DT device"
>         depends on OF_CONTROL && DM_MTD && ARCH_SOCFPGA
> +       select DEVRES
>         select SYS_NAND_SELF_INIT
>         select SPL_SYS_NAND_SELF_INIT
>         select SPL_NAND_BASE
> @@ -211,6 +215,7 @@ config NAND_CADENCE
>
>  config NAND_DENALI
>         bool
> +       select DEVRES
>         select SYS_NAND_SELF_INIT
>         select SYS_NAND_ONFI_DETECTION if TARGET_SOCFPGA_SOC64
>         imply CMD_NAND
> diff --git a/drivers/mtd/nand/spi/Kconfig b/drivers/mtd/nand/spi/Kconfig
> index 0777dfdf0a70..1124dada9506 100644
> --- a/drivers/mtd/nand/spi/Kconfig
> +++ b/drivers/mtd/nand/spi/Kconfig
> @@ -1,6 +1,7 @@
>  menuconfig MTD_SPI_NAND
>         bool "SPI NAND device Support"
>         depends on DM_MTD && DM_SPI
> +       select DEVRES
>         select MTD_NAND_CORE
>         select SPI_MEM
>         help
> diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig
> index ca60a425ba34..a13c7fc60e68 100644
> --- a/drivers/mtd/spi/Kconfig
> +++ b/drivers/mtd/spi/Kconfig
> @@ -3,6 +3,7 @@ menu "SPI Flash Support"
>  config DM_SPI_FLASH
>         bool "Enable Driver Model for SPI flash"
>         depends on DM_SPI
> +       select DEVRES
>         imply SPI_FLASH
>         help
>           Enable driver model for SPI flash. This SPI flash interface
> diff --git a/drivers/mux/Kconfig b/drivers/mux/Kconfig
> index 2b95eb02177c..de74e5d5e4ed 100644
> --- a/drivers/mux/Kconfig
> +++ b/drivers/mux/Kconfig
> @@ -3,6 +3,7 @@ menu "Multiplexer drivers"
>  config MULTIPLEXER
>         bool "Multiplexer Support"
>         depends on DM
> +       select DEVRES
>         help
>          The mux framework is a minimalistic subsystem that handles 
> multiplexer
>          controllers. It provides the same API as Linux and mux drivers should
> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
> index f382a7752d53..13e631c55dc2 100644
> --- a/drivers/net/Kconfig
> +++ b/drivers/net/Kconfig
> @@ -125,6 +125,7 @@ config AIROHA_ETH
>         bool "Airoha Ethernet QDMA Driver"
>         depends on ARCH_AIROHA
>         select PHYLIB
> +       select DEVRES
>         select DM_RESET
>         select MDIO_MT7531
>         help
> @@ -359,6 +360,7 @@ config ETH_SANDBOX_RAW
>
>  config ETH_DESIGNWARE
>         bool "Synopsys Designware Ethernet MAC"
> +       select DEVRES
>         select PHYLIB
>         imply ETH_DESIGNWARE_SOCFPGA if ARCH_SOCFPGA
>         help
> @@ -555,6 +557,7 @@ config MVNETA
>  config MVPP2
>         bool "Marvell Armada 375/7K/8K network interface support"
>         depends on ARMADA_375 || ARMADA_8K
> +       select DEVRES
>         select PHYLIB
>         select MVMDIO
>         select DM_MDIO
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index d0aab0b8fe87..709f1c91eb2d 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -182,6 +182,7 @@ config PHY_MARVELL
>
>  config PHY_MARVELL_10G
>         bool "Marvell Alaska 10Gbit PHYs"
> +       select DEVRES
>         help
>           Support for the Marvell Alaska MV88X3310 and compatible PHYs.
>
> @@ -245,6 +246,7 @@ config PHY_NATSEMI
>
>  config PHY_NXP_C45_TJA11XX
>         tristate "NXP C45 TJA11XX PHYs"
> +       select DEVRES
>         help
>           Enable support for NXP C45 TJA11XX PHYs.
>           Currently supports only the TJA1103 PHY.
> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> index ea9868425d04..8fc57895a786 100644
> --- a/drivers/pci/Kconfig
> +++ b/drivers/pci/Kconfig
> @@ -131,6 +131,7 @@ config PCIE_APPLE
>         bool "Enable Apple PCIe driver"
>         depends on ARCH_APPLE
>         imply PCI_INIT_R
> +       select DEVRES
>         select SYS_PCI_64BIT
>         default y
>         help
> @@ -264,6 +265,7 @@ config PCI_XILINX
>
>  config PCIE_LAYERSCAPE
>         bool
> +       select DEVRES
>
>  config PCIE_LAYERSCAPE_RC
>         bool "Layerscape PCIe Root Complex mode support"
> @@ -361,6 +363,7 @@ config PCI_KEYSTONE
>  config PCIE_MEDIATEK
>         bool "MediaTek PCIe Gen2 controller"
>         depends on ARCH_MEDIATEK
> +       select DEVRES
>         help
>           Say Y here if you want to enable Gen2 PCIe controller,
>           which could be found on MT7623 SoC family.
> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
> index 420d7c7a44dd..87729b479bd9 100644
> --- a/drivers/phy/Kconfig
> +++ b/drivers/phy/Kconfig
> @@ -4,6 +4,7 @@ menu "PHY Subsystem"
>  config PHY
>         bool "PHY Core"
>         depends on DM
> +       select DEVRES
>         help
>           PHY support.
>
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index 48119694031d..ea90713ec6ca 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -294,6 +294,7 @@ config PINCTRL_SANDBOX
>  config PINCTRL_SINGLE
>         bool "Single register pin-control and pin-multiplex driver"
>         depends on DM
> +       select DEVRES
>         help
>           This enables pinctrl driver for systems using a single register for
>           pin configuration and multiplexing. TI's AM335X SoCs are examples of
> diff --git a/drivers/pinctrl/mscc/Kconfig b/drivers/pinctrl/mscc/Kconfig
> index aab67fabd2cd..567c93f404cc 100644
> --- a/drivers/pinctrl/mscc/Kconfig
> +++ b/drivers/pinctrl/mscc/Kconfig
> @@ -2,6 +2,7 @@
>
>  config PINCTRL_MSCC
>         bool
> +       select DEVRES
>
>  config PINCTRL_MSCC_OCELOT
>         depends on SOC_OCELOT && PINCTRL_FULL && OF_CONTROL
> diff --git a/drivers/pinctrl/mvebu/Kconfig b/drivers/pinctrl/mvebu/Kconfig
> index 7c51d138c8bd..10ba440f246e 100644
> --- a/drivers/pinctrl/mvebu/Kconfig
> +++ b/drivers/pinctrl/mvebu/Kconfig
> @@ -9,6 +9,7 @@ config PINCTRL_ARMADA_38X
>
>  config PINCTRL_ARMADA_37XX
>         depends on ARMADA_3700 && PINCTRL_FULL
> +       select DEVRES
>         bool "Armada 37xx pin control driver"
>         help
>            Support pin multiplexing and pin configuration control on
> diff --git a/drivers/pinctrl/renesas/Kconfig b/drivers/pinctrl/renesas/Kconfig
> index ac40b31dbfaa..171da88cfcf4 100644
> --- a/drivers/pinctrl/renesas/Kconfig
> +++ b/drivers/pinctrl/renesas/Kconfig
> @@ -166,6 +166,7 @@ config PINCTRL_RZG2L
>         depends on PINCTRL
>         depends on PINCTRL_GENERIC
>         depends on PINCONF
> +       select DEVRES
>         help
>           Support the pinctrl functionality of the pin function controller 
> (PFC)
>           on the Renesas RZ/G2L SoC family.
> diff --git a/drivers/power/regulator/Kconfig b/drivers/power/regulator/Kconfig
> index 1875e61967c0..a9c82d6d24c2 100644
> --- a/drivers/power/regulator/Kconfig
> +++ b/drivers/power/regulator/Kconfig
> @@ -235,6 +235,7 @@ config DM_REGULATOR_GPIO
>  config DM_REGULATOR_QCOM_RPMH
>         bool "Enable driver model for Qualcomm RPMh regulator"
>         depends on DM_REGULATOR && QCOM_RPMH
> +       select DEVRES
>         ---help---
>           Enable support for the Qualcomm RPMh regulator. The driver
>           implements get/set api for a limited set of regulators used
> diff --git a/drivers/reboot-mode/Kconfig b/drivers/reboot-mode/Kconfig
> index bb5189351881..72b33d712235 100644
> --- a/drivers/reboot-mode/Kconfig
> +++ b/drivers/reboot-mode/Kconfig
> @@ -9,6 +9,7 @@ menu "Reboot Mode Support"
>  config DM_REBOOT_MODE
>         bool "Enable reboot mode using Driver Model"
>         depends on DM
> +       select DEVRES
>         help
>                 Enable support for reboot mode control. This will allow users 
> to
>                 adjust the boot process based on reboot mode parameter
> diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
> index 74c267dfc4e5..2fd91d6299cc 100644
> --- a/drivers/reset/Kconfig
> +++ b/drivers/reset/Kconfig
> @@ -3,6 +3,7 @@ menu "Reset Controller Support"
>  config DM_RESET
>         bool "Enable reset controllers using Driver Model"
>         depends on DM && OF_CONTROL
> +       select DEVRES
>         help
>           Enable support for the reset controller driver class. Many hardware
>           modules are equipped with a reset signal, typically driven by some
> diff --git a/drivers/smem/Kconfig b/drivers/smem/Kconfig
> index 73d51b3a7a48..e5d7dcc81b17 100644
> --- a/drivers/smem/Kconfig
> +++ b/drivers/smem/Kconfig
> @@ -16,6 +16,7 @@ config MSM_SMEM
>      bool "Qualcomm Shared Memory Manager (SMEM)"
>      depends on DM
>      depends on ARCH_SNAPDRAGON || ARCH_IPQ40XX
> +    select DEVRES
>      help
>        Enable support for the Qualcomm Shared Memory Manager.
>        The driver provides an interface to items in a heap shared among all
> diff --git a/drivers/soc/ti/Kconfig b/drivers/soc/ti/Kconfig
> index 0ee21f990488..36129cb72f68 100644
> --- a/drivers/soc/ti/Kconfig
> +++ b/drivers/soc/ti/Kconfig
> @@ -8,6 +8,7 @@ if SOC_TI
>  config TI_K3_NAVSS_RINGACC
>         bool "K3 Ring accelerator Sub System"
>         depends on ARCH_K3
> +       select DEVRES
>         select MISC
>         help
>           Say y here to support the K3 AM65x Ring accelerator module.
> diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
> index e31db9d4e31b..50d22bf3fc4c 100644
> --- a/drivers/spi/Kconfig
> +++ b/drivers/spi/Kconfig
> @@ -35,6 +35,7 @@ config DM_SPI
>
>  config SPI_MEM
>         bool "SPI memory extension"
> +       select DEVRES
>         help
>           Enable this option if you want to enable the SPI memory extension.
>           This extension is meant to simplify interaction with SPI memories
> @@ -343,6 +344,7 @@ config MT7621_SPI
>  config MTK_SNOR
>         bool "Mediatek SPI-NOR controller driver"
>         depends on SPI_MEM
> +       select DEVRES
>         help
>           Enable the Mediatek SPINOR controller driver. This driver has
>            better read/write performance with NOR.
> diff --git a/drivers/usb/cdns3/Kconfig b/drivers/usb/cdns3/Kconfig
> index 1d5e4afac6cd..7964f3f41d5e 100644
> --- a/drivers/usb/cdns3/Kconfig
> +++ b/drivers/usb/cdns3/Kconfig
> @@ -1,6 +1,7 @@
>  config USB_CDNS3
>         tristate "Cadence USB3 Dual-Role Controller"
>         depends on USB_XHCI_HCD || USB_GADGET
> +       select DEVRES
>         help
>           Say Y here if your system has a Cadence USB3 dual-role controller.
>           It supports: Host-only, and Peripheral-only.
> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
> index 744dfa90463c..27fcae54b227 100644
> --- a/drivers/usb/dwc3/Kconfig
> +++ b/drivers/usb/dwc3/Kconfig
> @@ -1,6 +1,7 @@
>  config USB_DWC3
>         bool "DesignWare USB3 DRD Core Support"
>         depends on USB_XHCI_HCD || USB_GADGET
> +       select DEVRES
>         help
>           Say Y here if your system has a Dual Role SuperSpeed
>           USB controller based on the DesignWare USB3 IP Core.
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index 99f381db9f9b..54df4264a441 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -367,6 +367,7 @@ config USB_OHCI_GENERIC
>  config USB_OHCI_DA8XX
>         bool "Support for da850 OHCI USB controller"
>         depends on ARCH_DAVINCI
> +       select DEVRES
>         help
>           Enable support for the da850 USB controller.
>
> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> index b5777da5218a..2c67d089492c 100644
> --- a/drivers/video/Kconfig
> +++ b/drivers/video/Kconfig
> @@ -831,6 +831,7 @@ config BACKLIGHT_LM3533
>  config BACKLIGHT_LP855x
>         bool "Backlight Driver for LP855x"
>         depends on BACKLIGHT
> +       select DEVRES
>         select DM_I2C
>         help
>           Say Y to enable the backlight driver for National Semiconductor / TI
> diff --git a/include/dm/devres.h b/include/dm/devres.h
> index 27761deb6d1f..406d18686f4d 100644
> --- a/include/dm/devres.h
> +++ b/include/dm/devres.h
> @@ -207,7 +207,8 @@ void devm_kfree(struct udevice *dev, void *ptr);
>  /* Get basic stats on allocations */
>  void devres_get_stats(const struct udevice *dev, struct devres_stats *stats);
>
> -#else /* ! DEVRES */
> +#elif IS_ENABLED(CONFIG_DEVRES) && defined(CONFIG_XPL_BUILD)
> +/* Allow these to be dummy functions in xPL builds. */
>
>  static inline void *devres_alloc(dr_release_t release, size_t size, gfp_t 
> gfp)
>  {

Can you please in the commit message a concrete example on what this
commit takes care of?
In short expand here:
" in full U-Boot, the corresponding automatic free. This in turn leads
to memory leaks."

Michael


> --
> 2.43.0
>


-- 
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
[email protected]
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
[email protected]
www.amarulasolutions.com

Reply via email to