On Sat, Jul 04, 2026 at 01:08:13AM +0530, Mukesh Ojha wrote: > Drivers using of_reserved_mem_device_init() and its variants must > manually call of_reserved_mem_device_release() in their remove and > error-unwind paths. This is repetitive boilerplate that is easy to > get wrong, and several drivers have open-coded the teardown > inconsistently or skipped it entirely, leading to dangling reserved > memory references. > > This series introduces devres-managed wrappers — > devm_of_reserved_mem_device_init(), devm_of_reserved_mem_device_init_by_idx(), > and devm_of_reserved_mem_device_init_by_name() — that tie the reserved > memory region lifetime to the device, releasing it automatically on > unbind. The remaining 40 patches convert drivers across the drm, media, > ASoC, remoteproc, firmware, mmc, memory and misc subsystems to use these > helpers, yielding a net reduction of ~90 lines of boilerplate. > > This series depends on > https://lore.kernel.org/lkml/[email protected]/ > > Konrad Dybcio (1): > of: reserved_mem: Introduce devres-managed initialization functions > > Mukesh Ojha (41): > of: reserved_mem: Add devm_of_reserved_mem_device_init_by_name() > firmware: qcom: scm: Use devm_of_reserved_mem_device_init() > remoteproc: da8xx: Use devm_of_reserved_mem_device_init() > remoteproc: keystone: Use devm_of_reserved_mem_device_init() > media: synopsys: hdmirx: Use devm_of_reserved_mem_device_init() > remoteproc: omap: Use devm_of_reserved_mem_device_init() > drm: logicvc: Use devm_of_reserved_mem_device_init() > drm: hdlcd: Use devm_of_reserved_mem_device_init() > drm: pl111: Use devm_of_reserved_mem_device_init() > remoteproc: mtk_scp: Use devm_of_reserved_mem_device_init() > media: aspeed: Use devm_of_reserved_mem_device_init() > media: nuvoton: npcm-video: Use devm_of_reserved_mem_device_init() > memory: tegra210-emc: Use devm_of_reserved_mem_device_init_by_name() > drm: komeda: Use devm_of_reserved_mem_device_init() > drm: malidp: Use devm_of_reserved_mem_device_init()
For the hdlcd, komeda and malidp drivers: Reviewed-by: Liviu Dudau <[email protected]> Best regards, Liviu > drm: ingenic: Use devm_of_reserved_mem_device_init() > drm: kmb: Use devm_of_reserved_mem_device_init() > drm: sun4i: Use devm_of_reserved_mem_device_init() > drm: xlnx: zynqmp_dpsub: Use devm_of_reserved_mem_device_init() > media: arm: mali-c55: Use devm_of_reserved_mem_device_init() > media: mediatek: vpu: Use devm_of_reserved_mem_device_init() > mmc: sdhci-of-bst: Use devm_of_reserved_mem_device_init_by_idx() > remoteproc: ti_k3: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8192: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8196: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8183: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8189: Use devm_of_reserved_mem_device_init() > ASoC: SOF: imx: Use devm_of_reserved_mem_device_init_by_name() > staging: media: cedrus: Use devm_of_reserved_mem_device_init() > ASoC: cix-ipbloq: Use devm_of_reserved_mem_device_init() > drm: aspeed: Use devm_of_reserved_mem_device_init() > drm: arcpgu: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8173: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8186: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8188: Use devm_of_reserved_mem_device_init() > ASoC: mediatek: mt8195: Use devm_of_reserved_mem_device_init() > ASoC: SOF: mediatek: mt8186: Use devm_of_reserved_mem_device_init() > ASoC: SOF: mediatek: mt8195: Use devm_of_reserved_mem_device_init() > misc: fastrpc: Use devm_of_reserved_mem_device_init() > ASoC: fsl: imx-rpmsg: Use devm_of_reserved_mem_device_init_by_idx() > ASoC: sprd: Use devm_of_reserved_mem_device_init() > > drivers/firmware/qcom/qcom_scm.c | 22 +++------ > .../gpu/drm/arm/display/komeda/komeda_dev.c | 4 +- > drivers/gpu/drm/arm/hdlcd_drv.c | 6 +-- > drivers/gpu/drm/arm/malidp_drv.c | 4 +- > drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +- > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +----- > drivers/gpu/drm/kmb/kmb_drv.c | 12 +---- > drivers/gpu/drm/logicvc/logicvc_drm.c | 21 ++++----- > drivers/gpu/drm/pl111/pl111_drv.c | 4 +- > drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +- > drivers/gpu/drm/tiny/arcpgu.c | 2 +- > drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +- > .../platform/arm/mali-c55/mali-c55-core.c | 12 ++--- > drivers/media/platform/aspeed/aspeed-video.c | 12 ++--- > drivers/media/platform/mediatek/vpu/mtk_vpu.c | 3 +- > drivers/media/platform/nuvoton/npcm-video.c | 9 +--- > .../platform/synopsys/hdmirx/snps_hdmirx.c | 16 +------ > drivers/memory/tegra/tegra210-emc-core.c | 21 ++++----- > drivers/misc/fastrpc.c | 2 +- > drivers/mmc/host/sdhci-of-bst.c | 7 +-- > drivers/of/of_reserved_mem.c | 41 +++++++++++++++++ > drivers/remoteproc/da8xx_remoteproc.c | 10 +--- > drivers/remoteproc/keystone_remoteproc.c | 16 +------ > drivers/remoteproc/mtk_scp.c | 3 +- > drivers/remoteproc/omap_remoteproc.c | 13 +----- > drivers/remoteproc/ti_k3_common.c | 13 +----- > drivers/remoteproc/ti_k3_common.h | 1 - > .../staging/media/sunxi/cedrus/cedrus_hw.c | 6 +-- > include/linux/of_reserved_mem.h | 46 +++++++++++++++++++ > sound/hda/controllers/cix-ipbloq.c | 2 +- > sound/soc/fsl/imx-rpmsg.c | 2 +- > sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 2 +- > sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 13 +----- > sound/soc/mediatek/mt8186/mt8186-afe-pcm.c | 2 +- > sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 2 +- > sound/soc/mediatek/mt8189/mt8189-afe-pcm.c | 16 +------ > sound/soc/mediatek/mt8192/mt8192-afe-pcm.c | 11 +---- > sound/soc/mediatek/mt8195/mt8195-afe-pcm.c | 2 +- > sound/soc/mediatek/mt8196/mt8196-afe-pcm.c | 14 +----- > sound/soc/sof/imx/imx-common.c | 9 ++-- > sound/soc/sof/mediatek/mt8186/mt8186.c | 2 +- > sound/soc/sof/mediatek/mt8195/mt8195.c | 2 +- > sound/soc/sprd/sprd-pcm-dma.c | 3 +- > 43 files changed, 162 insertions(+), 249 deletions(-) > > -- > 2.53.0 > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯

