of: reserved_mem: Introduce devres helpers and convert drivers
| From: | Mukesh Ojha <mukesh.ojha-AT-oss.qualcomm.com> | |
| To: | Bjorn Andersson <andersson-AT-kernel.org>, Konrad Dybcio <konradybcio-AT-kernel.org>, Liviu Dudau <liviu.dudau-AT-arm.com>, Maarten Lankhorst <maarten.lankhorst-AT-linux.intel.com>, Maxime Ripard <mripard-AT-kernel.org>, Thomas Zimmermann <tzimmermann-AT-suse.de>, David Airlie <airlied-AT-gmail.com>, Simona Vetter <simona-AT-ffwll.ch>, Joel Stanley <joel-AT-jms.id.au>, Andrew Jeffery <andrew-AT-codeconstruct.com.au>, Paul Cercueil <paul-AT-crapouillou.net>, Anitha Chrisanthus <anitha.chrisanthus-AT-intel.com>, Paul Kocialkowski <paulk-AT-sys-base.io>, Linus Walleij <linusw-AT-kernel.org>, Chen-Yu Tsai <wens-AT-kernel.org>, Jernej Skrabec <jernej.skrabec-AT-gmail.com>, Samuel Holland <samuel-AT-sholland.org>, Alexey Brodkin <abrodkin-AT-synopsys.com>, Laurent Pinchart <laurent.pinchart-AT-ideasonboard.com>, Tomi Valkeinen <tomi.valkeinen-AT-ideasonboard.com>, Michal Simek <michal.simek-AT-amd.com>, Daniel Scally <dan.scally-AT-ideasonboard.com>, Jacopo Mondi <jacopo.mondi-AT-ideasonboard.com>, Mauro Carvalho Chehab <mchehab-AT-kernel.org>, Eddie James <eajames-AT-linux.ibm.com>, Tiffany Lin <tiffany.lin-AT-mediatek.com>, Andrew-CT Chen <andrew-ct.chen-AT-mediatek.com>, Yunfei Dong <yunfei.dong-AT-mediatek.com>, Minghsiu Tsai <minghsiu.tsai-AT-mediatek.com>, Houlong Wei <houlong.wei-AT-mediatek.com>, Matthias Brugger <matthias.bgg-AT-gmail.com>, AngeloGioacchino Del Regno <angelogioacchino.delregno-AT-collabora.com>, Joseph Liu <kwliu-AT-nuvoton.com>, Marvin Lin <kflin-AT-nuvoton.com>, Dmitry Osipenko <dmitry.osipenko-AT-collabora.com>, Krzysztof Kozlowski <krzk-AT-kernel.org>, Thierry Reding <thierry.reding-AT-kernel.org>, Jonathan Hunter <jonathanh-AT-nvidia.com>, Srinivas Kandagatla <srini-AT-kernel.org>, Arnd Bergmann <arnd-AT-arndb.de>, Greg Kroah-Hartman <gregkh-AT-linuxfoundation.org>, Ge Gordon <gordon.ge-AT-bst.ai>, Adrian Hunter <adrian.hunter-AT-intel.com>, Ulf Hansson <ulfh-AT-kernel.org>, Rob Herring <robh-AT-kernel.org>, Saravana Kannan <saravanak-AT-kernel.org>, Mathieu Poirier <mathieu.poirier-AT-linaro.org>, Jaroslav Kysela <perex-AT-perex.cz>, Takashi Iwai <tiwai-AT-suse.com>, Shengjiu Wang <shengjiu.wang-AT-gmail.com>, Xiubo Li <Xiubo.Lee-AT-gmail.com>, Liam Girdwood <lgirdwood-AT-gmail.com>, Mark Brown <broonie-AT-kernel.org>, Frank Li <Frank.Li-AT-nxp.com>, Sascha Hauer <s.hauer-AT-pengutronix.de>, Peter Ujfalusi <peter.ujfalusi-AT-linux.intel.com>, Bard Liao <yung-chuan.liao-AT-linux.intel.com>, Daniel Baluta <daniel.baluta-AT-nxp.com>, Orson Zhai <orsonzhai-AT-gmail.com>, Baolin Wang <baolin.wang-AT-linux.alibaba.com>, Peter Chen <peter.chen-AT-cixtech.com>, Fugang Duan <fugang.duan-AT-cixtech.com> | |
| Subject: | [PATCH 00/42] of: reserved_mem: Introduce devres helpers and convert drivers | |
| Date: | Sat, 04 Jul 2026 01:08:13 +0530 | |
| Message-ID: | <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com> | |
| Cc: | Ekansh Gupta <ekansh.gupta-AT-oss.qualcomm.com>, BST Linux Kernel Upstream Group <bst-upstream-AT-bstai.top>, Fabio Estevam <festevam-AT-gmail.com>, Nicolin Chen <nicoleotsuka-AT-gmail.com>, Pengutronix Kernel Team <kernel-AT-pengutronix.de>, Kai Vehmanen <kai.vehmanen-AT-linux.intel.com>, Pierre-Louis Bossart <pierre-louis.bossart-AT-linux.dev>, Vijendar Mukunda <Vijendar.Mukunda-AT-amd.com>, Chunyan Zhang <zhang.lyra-AT-gmail.com>, CIX Linux Kernel Upstream Group <cix-kernel-upstream-AT-cixtech.com>, linux-arm-msm-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, dri-devel-AT-lists.freedesktop.org, linux-aspeed-AT-lists.ozlabs.org, linux-arm-kernel-AT-lists.infradead.org, linux-mips-AT-vger.kernel.org, linux-sunxi-AT-lists.linux.dev, linux-media-AT-vger.kernel.org, openbmc-AT-lists.ozlabs.org, linux-mediatek-AT-lists.infradead.org, kernel-AT-collabora.com, linux-tegra-AT-vger.kernel.org, linux-mmc-AT-vger.kernel.org, devicetree-AT-vger.kernel.org, linux-remoteproc-AT-vger.kernel.org, linux-staging-AT-lists.linux.dev, linux-sound-AT-vger.kernel.org, linuxppc-dev-AT-lists.ozlabs.org, imx-AT-lists.linux.dev, sound-open-firmware-AT-alsa-project.org, Mukesh Ojha <mukesh.ojha-AT-oss.qualcomm.com> | |
| Archive-link: | Article |
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/20260703164457.4040457-1-muk... 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() 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
