diff options
| author | Tom Rini <[email protected]> | 2025-12-27 16:37:11 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-01-09 09:08:14 -0600 |
| commit | 217cf656e249f698d390a7d8eaf255eb1a6c0230 (patch) | |
| tree | 517b0cbaabb08056ff41b7e2d9699ce58ae7880f /drivers/core | |
| parent | 284e1a00f4f28dcd6ddc8c860d22f1c8c427c5d5 (diff) | |
dm: core: Default to using DEVRES outside of xPL
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 tracking and free()'ing
functionality. This in turn leads to memory leaks because the driver
author expects that since the functions have the same name as in the
Linux Kernel they have the same behavior. In turn we then get
functionally correct commits such as commit 00e1fed93c8c ("firmware:
ti_sci: Fix memory leaks in devm_ti_sci_get_of_resource") that manually
add these calls. Rather than manually tracking allocations and
implementing free()s, rework things so that we follow expectations by
enabling the DEVRES functionality (outside of xPL phases).
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.
Reviewed-by: Michael Trimarchi <[email protected]>
Signed-off-by: Tom Rini <[email protected]>
Diffstat (limited to 'drivers/core')
| -rw-r--r-- | drivers/core/Kconfig | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig index 6b4330fe4ea..c9253099e6e 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,16 +272,17 @@ 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. Device resources managed by the devres framework are automatically released whether initialization fails half-way or the device gets - detached. + detached. This is most often used via devm_kmalloc and family and + is expected to work in a manner analogous to the Linux Kernel. - 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 and devres functions fall back + to non-managed variants. For example, devres_alloc() to kzalloc(), devm_kmalloc() to kmalloc(), etc. config DEBUG_DEVRES |
